12

我不明白为什么我的代码不起作用,有什么建议吗?

$pattern_c_sap='/\.\-/';
$local='.................';
$local_array = explode( '', $local );

for($i=0; $i<=$local_length; $i++){
if(preg_match($pattern_c_sap , $local_array[$i]) && preg_match($pattern_c_sap , $local_array[$i+1])) {
    return false;
}
}

我有以下错误: 正则表达式应该是

[/\.\-/]

在拆分每个字母时,我应该使用 str_split 而不是 explode 。

4

5 回答 5

18

您可以使用preg_match如下所示:

if(preg_match('/(.)\1/', $local, $match){
    echo "contains consecutive characters";
}

(.)捕获一个字符。

\1指捕获的字符。

因此,如果您有AA,则(.)捕获A\1将意味着A。所以正则表达式将检查AA.

于 2013-09-17T12:07:20.247 回答
5
if (preg_match('/(.)\1/', $str))
    echo "Has 2 same characters consecutively!";
于 2013-09-17T12:08:01.157 回答
5

警告:explode():此脚本第 5 行的空分隔符

$local_array = explode('', $local);

修复将是爆炸构造的正确分隔符

于 2013-09-17T12:09:31.043 回答
0

使用正则表达式量词连续多次匹配一个字符。喜欢/\.{2}/。这将连续匹配.两次。或者/g{4}/会连续四场比赛g

于 2013-09-17T12:08:47.190 回答
0
$pattern = "/(\.|\-)/";
$local='.................';

if (preg_match($pattern, $local, $matches)){
  $num_of_occurences = count($matches)-1 ;
  echo "Number of occurences is {$num_of_occurences}" ;

}
于 2013-09-17T12:09:20.533 回答