2015-10-12 91 views
1

如何統計字符串上的所有特殊字符? 例如:使用substr_count計算正則表達式

$sample_string = "!!~~Sample string"; 
echo substr($sample_string, special character); 

所以輸出將是4

+0

是否有可能在特殊字符的字符串中隨機distributend?在開始時不是全部順序? – syck

回答

0

通過正則表達式

$sample_string = "!!~~Sample string"; 

preg_match_all("/\W/",$sample_string,$match); 

echo count($match); 
0

substr_count()不使用正則表達式,所以你將不得不執行的每一個substr_count()燒焦你想要刪除。

$str = preg_replace('/[^ a-z0-9]+/i', '', $sample_string); 
$number_of_sprecial_chars = strlen($sample_string)-strlen($str); 

刪除字符串中的所有特殊字符,然後給出原始版本和修改版本之間的區別。

如果僅僅發生在年初的特殊字符(或者你想只有那些被替換),

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

會給你的情況下直接在開始的特殊字符的字符串(不使用substr())。

0

$圖案= '/ [!@#$%^ & *()] /' //將任何符號出現一次匹配[]

int preg_match_all (string $pattern , string $subject [, array &$matches [, int $flags = PREG_PATTERN_ORDER [, int $offset = 0 ]]]) 

內執行鍼對全球正則表達式匹配一個字符串。在主題中搜索模式中給定的正則表達式的所有匹配項,並按照標誌指定的順序將它們放入匹配項中。

找到第一個匹配後,後續搜索將繼續從上次匹配結束。

0

您可以簡單地使用preg_replace_callback功能隨着closure等作爲

$sample_string = "!!~~Sample string"; 
$count = 0; 
preg_replace_callback('/[^\h\w]/', function($m)use(&$count) { 
    $count++; 
}, $sample_string); 
echo $count;//4 

Demo

相關問題