2010-06-27 71 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, "_")); 

此计数字符串的长度,然后减去串长度而不左侧的下划线,结果是下划线的数量。