亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

php dom創建元素但自關閉

php dom創建元素但自關閉

PHP
Helenr 2021-06-30 14:51:53
我想創建一個 html 塊,如下所示:<media>    <media-reference source='15.jpg' />    <media-caption>caption</media-caption>    <hasSyndicationRights>1</hasSyndicationRights>    <licenseId>1</licenseId>    <licensorName>name</licensorName></media>但是在我的代碼中<media-reference>是這樣關閉的</media-reference>。我怎樣才能關閉那個標簽?這是我的代碼:$valFieldBody = '<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Odio labore aut hic soluta! Animi quaerat unde commodi minus dicta, a quidem. Soluta quaerat delectus, id, dolor ex placeat molestiae quae.</p><p><img  height="500" src="15.jpg" width="500"/></p>';$htmlEncoded = mb_convert_encoding($valFieldBody, 'HTML-ENTITIES', 'UTF-8');$doc = new DOMDocument;$opcionesLibXML = LIBXML_COMPACT | LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD;libxml_use_internal_errors(true);@$doc->loadHTML($htmlEncoded, $opcionesLibXML);libxml_use_internal_errors(false);$img_tag = $doc->getElementsByTagName('img');foreach ($img_tag as $key => $img_items){    $img_src = $img_items->getAttribute('src');    $tag_media = $doc->createElement('media');    $tag_media_reference = $doc->createElement('media-reference');    $tag_media_reference->setAttribute('mime-type','image/jpg');    $tag_media_reference->setAttribute('source',$img_src);    $tag_media_caption = $doc->createElement('media-caption',$img_title);    $tag_hasSyndicationRights = $doc->createElement('hasSyndicationRights','1');    $tag_licenseId = $doc->createElement('licenseId','1');    $tag_licensorName = $doc->createElement('licensorName',$img_title);    $tag_media->appendChild($tag_media_reference);    $tag_media->appendChild($tag_media_caption);    $tag_media->appendChild($tag_hasSyndicationRights);    $tag_media->appendChild($tag_licenseId);    $tag_media->appendChild($tag_licensorName);    $img_items->parentNode->replaceChild($tag_media, $img_items);}$valFieldBody = $doc->saveHTML($doc->documentElement);現在我str_replace用來改變它:$valFieldBody = str_replace("></media-reference>"," />", $valFieldBody);
查看完整描述

1 回答

?
萬千封印

TA貢獻1891條經驗 獲得超3個贊

問題是saveHTML()使用它自己的規則創建輸出(據我所知)并且并不總是根據 XHTML 標準編寫內容。相反,如果你使用它寫出來,saveXML()你應該得到一個更標準的輸出


$valFieldBody = $doc->saveXML($doc->documentElement);

這使...


<p>

    Lorem ipsum dolor sit amet, consectetur adipisicing elit. Odio labore

    aut hic soluta! Animi quaerat unde commodi minus dicta, a quidem.

    Soluta quaerat delectus, id, dolor ex placeat molestiae quae.

    <p>

        <media>

            <media-reference mime-type="image/jpg"

                source="15.jpg" />

            <media-caption>abcd</media-caption>

            <hasSyndicationRights>1</hasSyndicationRights>

            <licenseId>1</licenseId>

            <licensorName>abcd</licensorName>

        </media>

    </p>

</p>

(請注意,如果您的原始來源不是 XHTML,則保存為 XML 實際上可能會導致其他問題)


查看完整回答
反對 回復 2021-07-02
  • 1 回答
  • 0 關注
  • 141 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號