2011-10-10 68 views
0

我有一个网站,人们可以添加内容,当他们键入标题时,所有的字符都过滤到PHP分析MySQL时,只允许成员编写文本和数字。但我想允许破折号(-)和括号/括号(())。目前,我有:Preg_replace与PHP和MySQL,允许破折号和括号

$video_title = preg_replace('#[^A-za-z0-9 ?!.,]#i', '', $_POST['video_title']); 

我应该添加或删除preg_replace函数以允许这些字符?

+0

用斜线逃脱他们的字符添加到您的类。 – Furicane

回答

3

只需添加\(\) \-来表达

[^a-z0-9 ?!.,()-] 

由于刚刚抹去,你只有在a-z一次,如果它是不区分大小写。

1

这不是一个真正的答案,但它不适合在评论框中。

注意A-z可能不会做你的正则表达式字符类期望:它的ASCII码就在于那些Az,其中包括所有的大写和小写字母之间的所有字符匹配,但也有一堆标点符号人物:

echo join("", preg_grep("/[A-z]/", array_map("chr", range(0, 255)))) . "\n"; 

输出:

ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz