2011-09-22 77 views

回答

8
$new_string = preg_replace('~[^a-zA-Z0-9]+~', '', $string); 

[^a-zA-Z0-9]僅僅是一個否定的字符類(即:匹配不是包含在類中的任何字符)。

6

正如你可能知道,你可以刪除這些字符,像這樣:

$result = preg_replace("/[a-zA-Z0-9]/", "", $text); 

因此,要得到你想要的(保持這些字符,刪除任何其他人)的東西,我們需要「倒置」這樣的:

$result = preg_replace("/[^a-zA-Z0-9]/", "", $text); 

你也可以使用\ W,刪除任何 '非wordlike':

$result = preg_replace("/\W/", "", $text); 

「word」字符是任何字母或數字或下劃線字符,即任何可以成爲Perl「word」字符的字符。字母和數字的定義由PCRE的字符表控制,並且如果發生特定於語言環境的匹配,則可能會有所不同。例如,在「fr」(法語)語言環境中,一些大於128的字符代碼用於重音字母,並且這些符號由\ w匹配。

http://www.php.net/manual/en/regexp.reference.escape.php

1

strtr函數的效率不能使用正則表達式。

preg_replace('/[^a-zA-Z0-9]/', '', $stringToCheck); 
相關問題