我目前正在使用此功能去除标点符号,但它就像一个无法控制的斧头凶手。
<?php $search = preg_replace("/[^a-zA-Z 0-9]+/", " ", $search);?>
我希望更多地控制被剥离的内容。我想保留这些字符,字母和数字
/。 ,: - ?
这就是我现在想的所有这些
编辑:
这是查询db
的sql"SELECT c.ARTIST, c.TITLE, c.`CAT NO.`, c.FORMAT, c.`IMAGE PATH` FROM tracklisting t
RIGHT JOIN catelogue c ON c.`CAT NO.` = t.`TRACKLISTING CAT NO.`
WHERE t.`ARTIST` LIKE '%$search%' OR t.`TRACK TITLE` LIKE '%$search%'OR c.`ARTIST` LIKE '%$search%' OR c.`TITLE` LIKE '%$search%'"
编辑:
非常感谢大家,我现在就像炸弹一样工作。
答案 0 :(得分:4)
您可以简单地将这些字符添加到您的角色类中,以避免被替换:
preg_replace('#[^a-zA-Z 0-9/.,:?-]+#', " ", $search);
# ^^^^^^
一些字符需要在字符类中使用反斜杠进行转义,否则它们具有特殊含义:您选择的regular expression delimiter,反斜杠,紧密方括号和连字符(除非它在开头或者字符类的结尾)。此外,您还需要转义引号,以便它不会过早终止PHP字符串文字。
答案 1 :(得分:0)
您可以使用以下内容代替使用正则表达式:
$symbols = array('/','\\','\'','"',',','<','>','?',';',':','[',']','{','}','|','=','+','-','_',')','(','*','&','^','%','$','#','@','!','~','`');
for ($i = 0; $i < sizeof($symbols); $i++) {
$string = str_replace($symbols[$i],' ',$string);
}
如果您不熟悉正则表达式,那么理解起来会更容易一些。
然而,这样做可能会有性能下降。