Как проверить, содержит ли строка одну и ту же букву дважды подряд в 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 при разделении для каждой буквы.
5 answers
Предупреждение: взрыв(): Пустой разделитель в этом скрипте в строке 5
$local_array = explode('', $local);
Исправление было бы правильным разделителем в конструкции разнесения
Вы можете использовать preg_match
, как показано ниже:
if(preg_match('/(.)\1/', $local, $match){
echo "contains consecutive characters";
}
(.)
захватывает персонажа.
\1
относится к захваченному персонажу.
Итак, если у вас есть AA
, (.)
захватывает A
и \1
будет означать A
. Таким образом, регулярное выражение будет проверять наличие AA
.
if (preg_match('/(.)\1/', $str))
echo "Has 2 same characters consecutively!";
$pattern = "/(\.|\-)/";
$local='.................';
if (preg_match($pattern, $local, $matches)){
$num_of_occurences = count($matches)-1 ;
echo "Number of occurences is {$num_of_occurences}" ;
}
Используйте кванторы регулярных выражений для сопоставления символа несколько раз подряд. как /\.{2}/
. Это будет соответствовать .
дважды подряд. Или /g{4}/
будет соответствовать четырем последовательным g
.