我想我已经找到这个了..。但到目前为止还没有
我说的是一个正则表达式,它查看HTML编码的字符串:
blip ♦ trout’s mouth我是否已经用&\w+;和&#[0-9]+;覆盖了所有的基础
$encoded_string = htmlspecialchars($_GET["searchterms"]);
echo "<b>Search results for submitted string: \"$encoded_string\"</b><br><br>";
$html_special_chars_pattern = "!(&\\w+;|&#[0-9]+;)!";
$non_html_tokens = preg_split( $html_special_chars_pattern, $encoded_string, -1, PREG_SPLIT_DELIM_CAPTURE );发布于 2012-12-16 21:39:36
你错过了&#xH; or &#XH; numeric character references。
5.3.1数字字符参考
数字字符引用指定字符在文档字符集中的代码位置。数字字符引用可以采用两种形式:
。
也就是说,正则表达式中的&#[xX][a-fA-F0-9]+;。
发布于 2012-12-16 21:37:17
我在这里放了my earlier related post作为答案。如果其他人想出了更好的解决方案,或者为什么它会崩溃,请务必让我知道:)
preg_match_all('/&(?:[a-z]+|#\d+);/', $content, $matches);也支持十六进制实体:
preg_match_all('/&(?:[a-z]+|#x?\d+);/i', $content, $matches);顺便说一句,(?: ... )用于防止内存捕获。另请参阅:What does ? mean in this Perl regex?
https://stackoverflow.com/questions/13901577
复制相似问题