16

我想将所有 html 标签(  > < 等)转换为文本格式;我试过

html_entity_decode() 

但它会回来吗?如果 。

4

5 回答 5

23

使用htmlspecialchars_decode是相反的htmlspecialchars
PHP 文档页面中的示例:

    $str = '<p>this -&gt; &quot;</p>';
    echo htmlspecialchars_decode($str); 
    //Output: <p>this -> "</p>
于 2013-04-06T07:59:32.330 回答
16

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 &quot;walk&quot; the &lt;b&gt;dog&lt;/b&gt; now

echo $b; // I'll "walk" the <b>dog</b> now
于 2013-03-08T08:38:29.223 回答
6

利用

html_entity_decode()
代替
html_entity_encode()

于 2013-03-08T08:40:52.663 回答
4

如果您查看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 &nbsp; XYZ') );

?>
于 2014-11-06T21:45:49.000 回答
1

我知道我的答案来得太晚了,但我认为它可能对其他人有所帮助。我发现提取所有特殊字符的最佳方法是在 php.ini 中使用utf8_decode()。甚至用于处理&nbsp;或任何其他表示空格的特殊字符utf8_decode()

使用后utf8_decode()可以直接在代码中操作这些字符。例如,在以下代码中,函数 clean() 替换&nbsp;为空白。然后它使用单个空格替换所有额外的空格preg_replace()。使用 删除前导和尾随空格trim()

function clean($str)
{       
    $str = utf8_decode($str);
    $str = str_replace("&nbsp;", "", $str);
    $str = preg_replace("/\s+/", " ", $str);
    $str = trim($str);
    return $str;
}

$html = "&nbsp;&nbsp;&nbsp;&nbsp;  &nbsp;Hello world! lorem ipsum.";
$output = clean($html);
echo $output;

你好世界!lorem ipsum。

于 2016-06-29T19:02:03.253 回答