Как проверить, если строка содержит одну и ту же букву дважды в 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 вместо того, чтобы взорваться при расщеплении для каждой буквы.

Ответ 1

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

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

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

Ответ 2

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

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

(.) захватывает символ.

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

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

Ответ 3

if (preg_match('/(.)\1/', $str))
    echo "Has 2 same characters consecutively!";

Ответ 4

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

Ответ 5

$pattern = "/(\.|\-)/";
$local='.................';

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

}