2010-11-30 93 views
1

因此,我在我们正在开发的网站中搜索一个搜索框,该搜索框将使用英语和希腊语产品字符串在数据库中进行搜索。我正在尝试清除各种特殊字符(如:/)的文本输入。 ,'] [%& _等,并用空格替换它们或完全删除它们。他们甚至双实例应该被删除,如^^,& &,[等等在允许unicode的同时替换某些字符

我一直的preg_replace瞎搞,但不能找到解决的办法......

在此先感谢。

+1

那么,哪些字符*是允许的呢? a-z和α-ω?非拉丁,非希腊人,非“特殊”人物如あん呢? – deceze 2010-11-30 09:22:22

回答

2

有了preg_replace,你可以做你正在寻找的东西。在下一个例子中,所有非a-z,也不是A-Z,也不是/ _ | + - 字符由“”(什么都没有,空字符串)替换

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

添加要允许在该列表中的字符,你将有你的函数。

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

我希望它能帮助

+0

太好了,谢谢。我从此开始,提出了一些可行的方法。我认为... – 2010-11-30 09:38:10

0

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

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

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

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

2

我终于想出了这一点:

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

这似乎为我所需要的工作。它允许希腊字符(即使带有重音符号),字母数字和空格。用空格替换其他所有内容。感谢快速回复的人。