PHP正则表达式计算字符串中的起始辅音

时间:2015-06-22 04:40:54

标签: php regex

我需要找出一个单词有多少起始辅音。该号码稍后在程序中使用。 下面的代码确实有效,我想知道是否可以使用正则表达式执行此操作。

$mystring ="SomeStringExample";
$mystring2 =("bcdfghjklmnpqrstvwxyzABCDFGHJKLMNPQRSTWVXYZ");
$var = strspn($mystring, $mystring2);

使用正则表达式

$regex= ("^[b-df-hj-np-tv-z]");
$var = strspn($mystring, $regex);

不起作用,因为strspn需要两个字符串。

2 个答案:

答案 0 :(得分:0)

这是使用preg_match

执行此操作的一种方法
$string ="SomeStringExample";

preg_match('/^[b-df-hj-np-tv-z]*/i', $string, $matches);

$count = strlen($matches[0]);

正则表达式在字符串的开头(*)匹配零个或多个(/i)不区分大小写的[b-df-hj-np-tv-z])辅音^并存储匹配的$matches数组中的内容。然后,只需使用strlen获取匹配字符串的长度即可。不是最优雅的解决方案,但我相信它可以回答你的问题。

答案 1 :(得分:0)

这样做。整个正则表达式的结果将存储在$matches[0]中,匹配第一个捕获括号的文本将存储在$matches[1]中,因此找到$matches[1](甚至$matches[0]的长度因为捕获是整个正则表达式)将等同于你的代码所做的。但性能可能不会更好

$mystring ="SomeStringExample";
$regex= ("/^([b-df-hj-np-tv-z]*)/i");
preg_match_all($regex,$mystring,$matches);
echo sizeof($matches[1]);