2010-06-27 75 views
1

計數字符 '_'一個問題,正則表達式PHP

例如:

subject = '_abcd_abc'; // return 1 
or 
subject = '__abcd_abc'; // return 2 
or 
subject = '___abcd_abc'; // return 3 

大家幫幫我〜 我用PHP

+2

接受一些答案。 – 2010-06-27 17:48:21

+1

感謝Andy和Gumbo – meotimdihia 2010-06-27 17:59:52

回答

1

試試這個:

return preg_match('/^_+/', $str, $match) ? strlen($match[0]) : 0; 

如果preg_match找到匹配項,$match[0]將包含該匹配項並且strlen($match[0])返回匹配的長度;否則表達式將返回0

+0

preg_match在找到第一個匹配後停止搜索。 – 2010-06-27 17:52:22

+2

@彼得阿杰泰:那麼? – Gumbo 2010-06-27 17:53:23

+0

哎呀,我以爲他想要整個字符串中使用的下劃線的總數。沒關係,我明白了。 – 2010-06-27 17:55:35

3

如果您確定字符串的開頭包含_,你可以只用strspn()做到這一點:

echo strspn('___abcd_abc', '_'); 
// -> 3 

如果有可能是無下劃線,你仍然可以使用strlen做到這一點沒有一個正則表達式和ltrim

strlen($str) - strlen(ltrim($str, "_")); 

此計數字符串的長度,然後減去串長度而不左側的下劃線,結果是下劃線的數量。