我对PHP非常熟悉,但我在PHP中使用正则表达式是全新的。我想弄清楚如何只允许az,AZ,0-9,:,'(单引号),“”(双引号),+, - ,。,(逗号),&,!,*, (,和)。
我找到了几个我正在寻找的工作示例,除了如何允许单引号和双引号。
我正在寻找的一个例子是: 您好,这只是我要找的一个例子:“Hello World!”。
我正在尝试使用以下方法验证textarea $ _POST ['suggestion']:
$errors = array();
if(!preg_match('insert regular expression',$_POST['suggestion'])){
$errors['suggestion2'] = "Invalid";
}
我所尝试的一切,我总是得到:
我正在寻找的一个例子是:您好,这只是我要找的一个例子:\“Hello Wolrd!\”。
我不明白为什么\在引号前面?
答案 0 :(得分:3)
您可以使用以下正则表达式:
[a-zA-Z0-9:'"+.,&!*()-]
请注意,连字符-
位于结束位置,以便不形成范围(并且它可以与文字-
匹配)。 +
,*
,.
,(
和)
不必在字符类中进行转义。通常,^-]
应该被转义,但如果它们出现在角色类的最终位置的开头,则它们不必。 \
必须在字符类中进行转义,但您不允许它。
此外,如果要匹配允许符号的块,请在字符类之后添加+
量词:[a-zA-Z0-9:'"+.,&!*()-]+
。
示例PHP代码:
$re = "/[a-zA-Z0-9:'\"+.,&!*()-]/";
$str = "a-zA-Z0-9:'\"+.,&!*()-";
preg_match_all($re, $str, $matches);
修改强>
自更新问题以来,这里是早期PHP版本中的information to turn off escaping double quotes。作为其中一个选项,您可以转到 .htaccess 文件并设置php_flag magic_quotes_gpc Off
。