作为我的注册系统的一部分,我需要检查变量中是否存在特殊字符。我该如何执行此检查?给出最准确答案的人最好。
答案 0 :(得分:1)
当你说“特殊字符”时,假设你的意思是html实体,你可以使用它:
<?php
$table = get_html_translation_table(HTML_ENTITIES, ENT_COMPAT, 'UTF-8');
$chars = implode('', array_keys($table));
if (preg_match("/[{$chars}]+/", $string) === 1) {
// special chars in string
}
get_html_translation_table
获取所有可能的html实体。如果您只想要函数htmlspecialchars
转换的实体,那么您可以传递HTML_SPECIALCHARS
而不是HTML_ENTITIES
。 get_html_translation_table
的返回值是(html实体,转义实体)对的数组。
接下来,我们希望将所有html实体放在像[&"']+
这样的正则表达式中,它将匹配包含长度为1或更大的方括号内的一个字符的任何子字符串。因此,我们使用array_keys
来获取转换表的密钥(未编码的html实体),并将它们一起压缩成一个字符串。
然后我们将它们放入正则表达式并使用preg_match
来查看该字符串是否包含任何这些字符。您可以在PHP文档中阅读有关regular expression syntax的更多信息。
答案 1 :(得分:0)
$special_chars = // all the special characters you want to check for
$string = // the string you want to check for
if (preg_match('/'.$special_chars.'/', $string))
{
// special characters exist in the string.
}
查看preg_match的手册了解更多详情
答案 2 :(得分:0)
快速谷歌搜索“php特殊字符”会带来一些好消息:
htmlentities() - http://php.net/manual/en/function.htmlentities.php
htmlspecialchars() - http://php.net/manual/en/function.htmlspecialchars.php