Preg_替换为PHP和MySQL,允许破折号和括号

Preg_替换为PHP和MySQL,允许破折号和括号,php,mysql,parsing,Php,Mysql,Parsing,我有一个网站,人们可以在其中添加内容,当他们键入标题时,使用PHP解析MySQL时,所有字符都会被过滤,只允许成员编写文本和数字。但是我想允许破折号(-)和括号/括号(())。目前,我有: $video_title = preg_replace('#[^A-za-z0-9 ?!.,]#i', '', $_POST['video_title']); 我应该在preg\u replace函数中添加或删除什么来允许这些字符?只需在表达式中添加\(\)\- [^a-z0-9 ?!.,()-] 由于它

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

$video_title = preg_replace('#[^A-za-z0-9 ?!.,]#i', '', $_POST['video_title']);
我应该在preg\u replace函数中添加或删除什么来允许这些字符?

只需在表达式中添加
\(\)\-

[^a-z0-9 ?!.,()-]
由于它刚刚被擦除,如果它不区分大小写,则只需将
a-z
删除一次。

只需将
\(\)\-
添加到表达式中即可

[^a-z0-9 ?!.,()-]
由于它刚刚被删除,如果它不区分大小写,您只需将
a-z
删除一次。

这不是一个真正的答案,但它不适合放在注释框中

请注意,
A-z
可能不会达到您在regexp字符类中所期望的效果:它匹配ASCII代码位于
A
z
之间的所有字符,其中包括所有大小写字母,但也包括一组标点字符:

echo连接(“,preg_grep(“/[A-z]/”,数组映射(“chr”,范围(0255)))。“\n”;
产出:

abcdefghijklmnopqrstuvxyz[\]^`abcdefghijklmnopqrstuvxyz
这不是一个真正的答案,但它不适合放在评论框中

请注意,
A-z
可能不会达到您在regexp字符类中所期望的效果:它匹配ASCII代码位于
A
z
之间的所有字符,其中包括所有大小写字母,但也包括一组标点字符:

echo连接(“,preg_grep(“/[A-z]/”,数组映射(“chr”,范围(0255)))。“\n”;
产出:

abcdefghijklmnopqrstuvxyz[\]^`abcdefghijklmnopqrstuvxyz

通过斜杠转义将字符添加到类中。通过斜杠转义将字符添加到类中。