php正则表达式,用于识别解码字符串中的所有HTML特殊字符
我期待着在这么早就找到这个。。。但到目前为止还没有 我说的是一个正则表达式,它查看HTML编码的字符串:例如php正则表达式,用于识别解码字符串中的所有HTML特殊字符,php,html,regex,decoding,Php,Html,Regex,Decoding,我期待着在这么早就找到这个。。。但到目前为止还没有 我说的是一个正则表达式,它查看HTML编码的字符串:例如 blip ♦ trout’s mouth 我是否用&\w+覆盖了所有的基础和[0-9]+ $encoded_string = htmlspecialchars($_GET["searchterms"]); echo "<b>Search results for submitted string: \"$encoded_string
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 );
$encoded\u string=htmlspecialchars($\u GET[“searchterms]”);
echo“提交字符串的搜索结果:\“$encoded\u string\”
”;
$html_special_chars_pattern=“!(&\\w+|[0-9]+)!”;
$non_html_tokens=preg_split($html_special_chars_pattern,$encoded_string,-1,preg_split_DELIM_CAPTURE);
我在这里给出了答案。如果有人提出了更好的解决方案,或者为什么会出现问题,请务必告诉我:)
要同时支持十六进制实体,请执行以下操作:
preg_match_all('/&(?:[a-z]+|#x?\d+);/i', $content, $matches);
顺便说一句,(?:…)
用于防止内存捕获。另见:我在这里给出了答案。如果有人提出了更好的解决方案,或者为什么会出现问题,请务必告诉我:)
要同时支持十六进制实体,请执行以下操作:
preg_match_all('/&(?:[a-z]+|#x?\d+);/i', $content, $matches);
顺便说一句,(?:…)
用于防止内存捕获。另请参见:您错过了
5.3.1数字字符参考
数字字符引用指定字符在文档字符集中的代码位置。数字字符引用可以采用两种形式:
- 语法“D;”,其中D是十进制数字,指的是ISO10646十进制字符数D
- 语法“H;”或“H;”,其中H是十六进制数,表示ISO 10646十六进制字符号H。数字字符引用中的十六进制数字不区分大小写。
也就是说,[xX][a-fA-F0-9]+代码>在正则表达式中。缺少
5.3.1数字字符参考
数字字符引用指定字符在文档字符集中的代码位置。数字字符引用可以采用两种形式:
- 语法“D;”,其中D是十进制数字,指的是ISO10646十进制字符数D
- 语法“H;”或“H;”,其中H是十六进制数,表示ISO 10646十六进制字符号H。数字字符引用中的十六进制数字不区分大小写。
也就是说,[xX][a-fA-F0-9]+代码>在正则表达式中。谢谢。。。据你所知,这是否涵盖了所有HTML实体(引用等),yes@Alexander+1谢谢你的推荐:)谢谢。。。据你所知,这是否涵盖了所有HTML实体(引用等),yes@Alexander+1谢谢你的推荐:)谢谢。。。正如您在下面的答案中所看到的,似乎还有十六进制参考值的问题。此外,我还试图了解“?:”序列在您的正则表达式中具有什么功能…@mikeverent,(?:)
是一个非捕获组谢谢。。。正如您在下面的答案中所看到的,似乎还有十六进制参考值的问题。我还试图了解“?:”序列在您的正则表达式中有什么功能…@mikeverent,(?:)
是一个非捕获组