DOMDocument在php开始标记附近丢失了一些代码

时间:2016-06-22 17:40:49

标签: php encoding domdocument

我喜欢使用代码元素来保存整个节点的值。但它失去了以下部分:'<?php $this->'。可能它会将该部分视为html标记。我不知道。 请参阅代码段:

<?php
$text = '<div><code><?php $this->goal = \'żźćłóąę\';</code></div>';
$dom = new \DOMDocument();
$dom->loadHTML(mb_convert_encoding($text, 'HTML-ENTITIES', "UTF-8"));
$codeElements = $dom->getElementsByTagName('code');
foreach($codeElements as $elem)
    var_dump($elem->nodeValue);

结果是:

`string(24) "goal = 'żźćłóąę';"`

但应该是

string(37) "<?php $this->goal = 'żźćłóąę';"

如何实现这个目标?

在线:https://3v4l.org/d6DFm

谢谢

修改

经过一些评论后,我的问题需要一些解释。 这个

  

&lt;?php $ this-&gt; goal ='żźćłóąę';

不得由php解释器解析。这必须显示为代码演示。整个文本,整行必须显示为字符串。打开php标签,变量和箭头。

1 个答案:

答案 0 :(得分:0)

试试这个

    <?php
$text = '<div><code><?php $this->goal = \'żźćłóąę\';</code></div>';
$text = str_replace("<?","&lt;?",$text);
$dom = new \DOMDocument();
$dom->loadHTML(mb_convert_encoding($text, 'HTML-ENTITIES', "UTF-8"));
$codeElements = $dom->getElementsByTagName('code');
foreach($codeElements as $elem)
    var_dump($elem->nodeValue);