我有一个网站,人们可以添加内容,当他们键入标题时,所有的字符都过滤到PHP分析MySQL时,只允许成员编写文本和数字。但我想允许破折号(-
)和括号/括号(()
)。目前,我有:Preg_replace与PHP和MySQL,允许破折号和括号
$video_title = preg_replace('#[^A-za-z0-9 ?!.,]#i', '', $_POST['video_title']);
我应该添加或删除preg_replace函数以允许这些字符?
我有一个网站,人们可以添加内容,当他们键入标题时,所有的字符都过滤到PHP分析MySQL时,只允许成员编写文本和数字。但我想允许破折号(-
)和括号/括号(()
)。目前,我有:Preg_replace与PHP和MySQL,允许破折号和括号
$video_title = preg_replace('#[^A-za-z0-9 ?!.,]#i', '', $_POST['video_title']);
我应该添加或删除preg_replace函数以允许这些字符?
只需添加\(\) \-
来表达
[^a-z0-9 ?!.,()-]
由于刚刚抹去,你只有在a-z
一次,如果它是不区分大小写。
这不是一个真正的答案,但它不适合在评论框中。
注意A-z
可能不会做你的正则表达式字符类期望:它的ASCII码就在于那些A
和z
,其中包括所有的大写和小写字母之间的所有字符匹配,但也有一堆标点符号人物:
echo join("", preg_grep("/[A-z]/", array_map("chr", range(0, 255)))) . "\n";
输出:
ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz
用斜线逃脱他们的字符添加到您的类。 – Furicane