我想将所有 html 标签( > < 等)转换为文本格式;我试过
html_entity_decode()
但它会回来吗?如果 。
使用htmlspecialchars_decode
是相反的htmlspecialchars
。
PHP 文档页面中的示例:
$str = '<p>this -> "</p>';
echo htmlspecialchars_decode($str);
//Output: <p>this -> "</p>
html_entity_decode()与htmlentities()的相反之处在于它将字符串中的所有 HTML 实体转换为其适用的字符。
$orig = "I'll \"walk\" the <b>dog</b> now";
$a = htmlentities($orig);
$b = html_entity_decode($a);
echo $a; // I'll "walk" the <b>dog</b> now
echo $b; // I'll "walk" the <b>dog</b> now
利用
html_entity_decode()代替
html_entity_encode()
如果您查看html_entity_decode()手册:
你可能想知道为什么 trim(html_entity_decode(' ')); 不会将字符串缩减为空字符串,这是因为 ' ' 实体不是 ASCII 码 32(由 trim() 剥离)而是默认 ISO 8859-1 字符集中的 ASCII 码 160 (0xa0)。
您可以将 html_entity_decode() 函数嵌套在str_replace()到 ASCII #160 到空格中:
<?php
echo str_replace("\xA0", ' ', html_entity_decode('ABC XYZ') );
?>
我知道我的答案来得太晚了,但我认为它可能对其他人有所帮助。我发现提取所有特殊字符的最佳方法是在 php.ini 中使用utf8_decode()。甚至用于处理
或任何其他表示空格的特殊字符utf8_decode()
。
使用后utf8_decode()
可以直接在代码中操作这些字符。例如,在以下代码中,函数 clean() 替换
为空白。然后它使用单个空格替换所有额外的空格preg_replace()
。使用 删除前导和尾随空格trim()
。
function clean($str)
{
$str = utf8_decode($str);
$str = str_replace(" ", "", $str);
$str = preg_replace("/\s+/", " ", $str);
$str = trim($str);
return $str;
}
$html = " Hello world! lorem ipsum.";
$output = clean($html);
echo $output;
你好世界!lorem ipsum。