检查特殊字符

时间:2011-06-30 04:34:05

标签: php html

  

可能重复:
  preg_match php special characters

作为我的注册系统的一部分,我需要检查变量中是否存在特殊字符。我该如何执行此检查?给出最准确答案的人最好。

3 个答案:

答案 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_ENTITIESget_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