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;
}
}

次のエラーがありました: 正規表現は

[/\.\-/]

文字ごとに分割するときは、explode の代わりに str_split を使用する必要がありました。

4

5 に答える 5

18

preg_match以下のようなものを使用できます。

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

(.)キャラクターをキャプチャします。

\1キャプチャされたキャラクターを指します。

したがって、 がある場合、AAとはを意味(.)します。したがって、正規表現は をチェックします。A\1AAA

于 2013-09-17T12:07:20.247 に答える
5

警告: 爆発(): このスクリプトの 5 行目の区切り文字が空です

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

修正は、分解構造の適切な区切り文字になります

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

正規表現の量指定子を使用して、文字を連続して何回も一致させます。のように/\.{2}/。これは.2 回連続で一致します。または/g{4}/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 に答える