允许unicode替换某些字符(PHP)

时间:2010-11-30 09:17:05

标签: php replace preg-replace special-characters

所以我在我们正在开发的网站上有一个搜索框,它将在包含英语和希腊语产品字符串的数据库中进行搜索。我正在尝试清除各种特殊字符的文本输入,例如:/。 ,'] [%& _等用空格替换它们或完全删除它们。甚至应该删除它们的双重实例,例如^^,&&,[[etc。

我一直在使用preg_replace,但找不到解决方案......

提前致谢。

3 个答案:

答案 0 :(得分:3)

我终于想出了这个:

$term = preg_replace("/[^\p{Greek}a-zA-Z0-9\s]+/u", '', $term);

它似乎适用于我需要的东西。它允许希腊字符(甚至带有重音符号),字母数字和空格。用空格替换其他所有东西。感谢快速响应的人。

答案 1 :(得分:2)

使用preg_replace,您可以执行您要查找的内容。在下一个例子中,所有非a-z也不是A-Z,也不是/ _ | + - 字符替换为''(无,空字符串)

preg_replace("/[^a-zA-Z0-9\/_|+ -]/", '', $str);

在该列表中添加您想要允许的字符,您将拥有自己的功能。

其他方式是str_replace(),但在这里你必须逐个插入你想要在不同函数调用中删除的所有元素。

我希望它有所帮助

答案 2 :(得分:0)

为什么不制作数组并使用str_replace?

$unallowedChars = array("^", "&", "/", "."); // more for your choosing

$searchContent = str_replace($unallowedChars, "", $searchContent);

用“”替换数组的所有值,换句话说没有。