1

preg_replace ステートメントを機能させようとしていますが、いくつかのバリエーションを除いて、ほとんどの場合これが行われます。

<?php
$string = "10vdc";
if (preg_match("/(^[0-9]+[0-9])+[v | a]/i",$string)) {
    echo "yes!";
    $string = preg_replace("/^[0-9]+[0-9]/","$0 ",$string);
}
if (preg_match("/[v | a][ac | dc]/i",$string)) {
    echo "<br>yes2!";
    $string = preg_replace("/([\d | \s][v | a])([ac|dc])/i","$1 $2",$string);
}
echo "<br>";
echo $string;
?>

文字列が 10vdc、10 vdc、10vac、または 10 vac の場合、正規表現は機能します (それぞれ 10 v dc または 10 v ac を出力する必要があります) が、文字列が 10adc、10 adc、10aac、または 10 aac の場合、エコーが返されます。それぞれ 10 adc または 10 aac のみです。私は午前中ずっとチュートリアルに取り組んでいて、これのコツをつかみ始めていますが、これは私を困惑させています!

試してみたい場合は、$string の値を変更するだけです。

助けてくれてありがとう!あなたはすべて最高です。

4

1 に答える 1

0

問題が見つかりました。|or ( ) 指定子の後のスペースに関係しています。

だから何だった:
/([\d | \s][v | a])([ac|dc])/i

読む必要があります:
/([\d|\s][v|a])([ac|dc])/i.

于 2013-10-18T16:53:44.170 に答える