如何使用PHP去除所有不是字母,數字,空格或puncutation的字符?正則表達式:去除非字母數字或標點
我試過以下,但它剝離標點符號。
preg_replace("/[^a-zA-Z0-9\s]/", "", $str);
如何使用PHP去除所有不是字母,數字,空格或puncutation的字符?正則表達式:去除非字母數字或標點
我試過以下,但它剝離標點符號。
preg_replace("/[^a-zA-Z0-9\s]/", "", $str);
preg_replace("/[^a-zA-Z0-9\s\p{P}]/", "", $str);
實施例:
php > echo preg_replace("/[^a-zA-Z0-9\s\p{P}]/", "", "⟺f✆oo☃. ba⟗r!");
foo. bar!
\p{P}
匹配所有Unicode標點符號(請參閱Unicode character properties)。如果您只想允許特定的標點符號,只需將它們添加到否定的字符類。 E.g:
preg_replace("/[^a-zA-Z0-9\s.?!]/", "", $str);
你將不得不列出標點符號明確,因爲沒有簡寫爲(例如\s
是空白字符的簡寫)。
preg_replace('/[^a-zA-Z0-9\s\-=+\|[email protected]#$%^&*()`~\[\]{};:\'",<.>\/?]/', '', $str);
$str = trim($str);
$str = trim($str, "\x00..\x1F");
$str = str_replace(array(""","'","&","<",">"),' ',$str);
$str = preg_replace('/[^0-9a-zA-Z-]/', ' ', $str);
$str = preg_replace('/\s\s+/', ' ', $str);
$str = trim($str);
$str = preg_replace('/[ ]/', '-', $str);
希望這有助於。
這樣就可以加上:。 ? !正確 – Tedd 2010-06-16 02:35:53
第二個會。第一個允許所有標點符號。 – 2010-06-16 02:36:40
這些似乎去除所有字符:( – Tedd 2010-06-16 02:42:33