2011-11-27 132 views

回答

6

我不會用正則表達式,大概就像...

$str = trim($str, '"\''); 

當第二個參數是你定義什麼如標點符號

假設你的真正用意去掉的東西是不字母,數字等,我會用...

$str = preg_replace('/^\PL+|\PL\z/', '', $str); 
+0

更好,沒有想到這一點。 – Alasdair

+1

修正第二個參數正是我正在尋找的。 – Alasdair

3

這取決於你所說的標點符號,但:

preg_replace('/^\W*(.+?)\W*$/', '$1', $source); 
+0

這是一個有趣的正則表達式......你確定這會起作用嗎? – alex

+0

@alex:不,現在修正:)但是'trim'反正好得多。 – Ryan

+0

我仍然認爲它有點偏差,你可能想把這些字符放在角色類中,例如'[;]'。 – alex

0

去只保留字母數字字符

preg_replace('/[^a-z0-9]+/i', '', $string); 

爲所有ponctuations:

preg_replace('[:punct:]+', '', $string); 
5

可能取決於您對標點符號的定義。如果它只是「字母數字」或其他類似的東西,那麼正則表達式可能就是要走的路。但是,如果是「期間,問號和感嘆號」或其他易於理解的列表,則會更容易理解:

trim($string, '?!.'); 
相關問題