html_entity_decode使用html-string进行神秘操作

时间:2016-11-10 16:33:13

标签: php php-7

有一个变量

$out = "<h4>Edit User-Bundle Configuration</h4>
<p>
Open file application/config/routes.php. Here you find:
<pre>$route['default_controller'] = 'welcome'</pre>
</p>";

当我做的时候

html_entity_decode($out);

现在我期待

<h4>Edit User-Bundle Configuration</h4> 
<p> Open file application/config    /routes.php. Here you find:
<pre>$route['default_controller'] = 'welcome'</pre> 
</p>        

但它会发出

<h4>Edit User-Bundle Configuration</h4>
<p> Open file application/config/routes.php. Here you find: </p>
<pre>$route['default_controller'] = 'welcome'</pre>
<p></p>

1 个答案:

答案 0 :(得分:1)

你误解了这个问题。 PHP将输出您期望的代码。

您认为它输出的代码是将其传递给浏览器,将其呈现为HTML然后查看DOM(而不是查看源代码)的结果。

这是因为浏览器正在执行错误恢复。

禁止<pre>元素出现在<p>元素中。 Paragraphs可能只包含phrasing content(不包含<pre>元素)。

如果您跳过PHP并直接转到所需的HTML,则可以看到这一点:

<h4>Edit User-Bundle Configuration</h4> 
<p> Open file application/config    /routes.php. Here you find:
<pre>$route['default_controller'] = 'welcome'</pre> 
</p>        

Chrome中生成的DOM的屏幕截图,来自以上代码段:

DOM