一个问题正则表达式PHP

时间:2010-06-27 17:46:01

标签: php regex

在起始行中计算字符'_'

示例:

subject = '_abcd_abc';   // return 1
or 
subject = '__abcd_abc';  // return 2
or 
subject = '___abcd_abc';  // return 3
大家帮帮我〜 我用PHP

2 个答案:

答案 0 :(得分:3)

如果您确定字符串的开头包含_,则可以仅使用strspn()执行此操作:

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

如果可能没有前导下划线,您仍然可以在没有使用strlenltrim的正则表达式的情况下执行此操作:

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

这会计算字符串长度,然后减去左边没有下划线的字符串长度,结果就是下划线的数量。

答案 1 :(得分:1)

试试这个:

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

如果preg_match找到匹配项,$match[0]将包含该匹配项,strlen($match[0])将返回匹配项的长度;否则表达式将返回0