2011-01-21 49 views
12

我用幾行代碼刪除所有的標點,符號等,你可以在陣列中看到他們,刪除標點符號,符號,變音符號,特殊字符的最佳方法是什麼?

$pattern_page = array("+",",",".","-","'","\"","&","!","?",":",";","#","~","=","/","$","£","^","(",")","_","<",">"); 

$pg_url = str_replace($pattern_page, ' ', strtolower($pg_url)); 

,但我想更簡單,因爲它看起來傻乎乎地列出所有的東西我想要在陣列中移除,因爲可能會有一些我想移除的其他特殊字符。

我想用下面的正則表達式,

$pg_url = preg_replace("/\W+/", " ", $pg_url); 

,但它並沒有在得分刪除 - _

什麼是去除所有這些東西的最佳方式?正則表達式能做到嗎?

+1

您可以刪除除[A-Za-z0-9]之外的所有內容;-) – thedom

+0

aw!非常感謝! – laukok

回答

25

根據您希望如何貪婪是,你可以這樣做:

$pg_url = preg_replace("/[^a-zA-Z 0-9]+/", " ", $pg_url); 

這將取代任何不是字母,數字或空間。

+1

非常感謝你。 – laukok

+0

快速和容易:)謝謝 – Goaler444

12

使用類:

preg_replace('/[^[:alpha:]]/', '', $input); 

將消除,這不是審議了當前設置的地點「字符」任何東西。如果是標點符號,你試圖消除,該類將是[:punct:]

\W意味着「任何非文字字符」,並且是的\w相反其包括下劃線(_)。