2010-11-30 91 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); 

這似乎爲我所需要的工作。它允許希臘字符(即使帶有重音符號),字母數字和空格。用空格替換其他所有內容。感謝快速回復的人。