PHP编码XHTML所以编码的&符号,但不是插入符号

时间:2014-04-02 12:37:47

标签: php xhtml

我想编码实体以防止XHTML破坏而不编码XHTML元素本身。所以留下像插图一样的东西,但编码&符号。以下是我尝试搞砸的最小例子(是的,我知道它不是有效的XHTML,仅用于测试目的)。

<?php
$b = '&<br />&';
//echo htmlentities($b,ENT_XHTML);
echo htmlspecialchars($b);
?>

所需的输出......

  

&安培;

     

&安培;

2 个答案:

答案 0 :(得分:0)

如果我理解正确,你只想编码&符号,试试这个:

echo str_replace('&', '&amp;', $b);

<强> [编辑]

如果您担心将&amp;的实例编码为&amp;amp;,可以使用:

echo preg_replace('/&[^(amp;)]/', '&amp;', $b);

在这种情况下,Test & &amp;将被编码为Test &amp; $amp;

答案 1 :(得分:0)

我抓住了所有......

<?php
$s = 'example & and &#38;.';
$f = array('&','&#38;#38;','&amp;','&#38;amp;');
$r = array('&#38;','&#38;','&#38;','&#38;');
echo str_replace($f,$r,$b);
?>

创建了一千个实体测试用例后,将所有真正需要编码的所有字符复制到XHTML文件中的是&符号。

对于那些测试并遇到奇怪的字符,例如Ã确保您的页面编码为UTF-8,而不是 windows-1252。