从PHP中的字符串中删除HTML代码

时间:2012-05-30 06:47:37

标签: php string

我想使用REGEX从字符串中删除所有HTML代码,例如" € á ...

字符串:"This is a string " € á &"

需要输出:This is a string

5 个答案:

答案 0 :(得分:1)

你可以尝试

$str="This is a string " € á &";
$new_str = preg_replace("/&#?[a-z0-9]+;/i",'',$str);
echo $new_str;

我希望这可能有效

<强> DESC

& - starting with 
# - some HTML entities use the # sign 
?[a-z0-9] - followed by
;- ending with a semi-colon
i - case insensitive. 

答案 1 :(得分:0)

preg_replace('#&[^;]+;#', '', "This is a string &quot; &euro; &aacute; &amp;");

答案 2 :(得分:0)

试试这个:

preg_replace('/[^\w\d\s]*/', '', htmlspecialchars_decode($string));

虽然它可能删除了一些你不想删除的东西。您可能需要修改正则表达式。

答案 3 :(得分:0)

$str = preg_replace_callback('/&[^; ]+;/', function($matches){
    return html_entity_decode($matches[0], ENT_QUOTES) == $matches[0] ? $matches[0] : '';
}, $str);

这将有效,但不会删除&euro;,因为它不是HTML 4中的实体。如果你有PHP 5.4,你可以使用标志ENT_QUOTES | ENT_HTML5使其与HTML5实体一起正常工作比如&euro;

答案 4 :(得分:0)

如果您尝试完全删除实体(即:不解码它们),请尝试以下操作:

$string = 'This is a string &quot; &euro; &aacute; &amp;';

$pattern = '/&([#0-9A-Za-z]+);/';
echo preg_replace($pattern, '', $string);