Как проверить, содержит ли строка одну и ту же букву дважды подряд в php?


Я не понимаю, почему мой код не работает, какие-нибудь предложения?

$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 при разделении для каждой буквы.

Author: Andreas Hartmann, 2013-09-17

5 answers

Предупреждение: взрыв(): Пустой разделитель в этом скрипте в строке 5

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

Исправление было бы правильным разделителем в конструкции разнесения

 5
Author: geekdev, 2013-09-17 12:21:37

Вы можете использовать preg_match, как показано ниже:

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

(.) захватывает персонажа.

\1 относится к захваченному персонажу.

Итак, если у вас есть AA, (.) захватывает A и \1 будет означать A. Таким образом, регулярное выражение будет проверять наличие AA.

 17
Author: Jerry, 2014-05-07 08:07:08
if (preg_match('/(.)\1/', $str))
    echo "Has 2 same characters consecutively!";
 5
Author: gopivignesh.m, 2013-12-17 20:44:29
$pattern = "/(\.|\-)/";
$local='.................';

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

}
 0
Author: vikingmaster, 2013-09-17 12:09:20

Используйте кванторы регулярных выражений для сопоставления символа несколько раз подряд. как /\.{2}/. Это будет соответствовать . дважды подряд. Или /g{4}/ будет соответствовать четырем последовательным g.

 0
Author: Stefan Dunn, 2013-12-17 20:44:54