質問

うーん... preg_replaceの呼び出しで変数を使用するにはどうすればよいですか?

これは機能しませんでした:

foreach($numarray as $num => $text)
    {
        $patterns[] = '/<ces>(.*?)\+$num(.*?)<\/ces>/';
        $replacements[] = '<ces>$1<$text/>$2</ces>';
    }

はい、$numの前にはプラス記号が付いています。はい、<!> quot; tag the $num as <$text/> <!> quot;にします。

役に立ちましたか?

解決

置換パターンは問題ないように見えますが、一致パターンで一重引用符を使用しているため、$ num変数は挿入されません。代わりに、試してください

$patterns[] = '/<ces>(.*?)\+'.$num.'(.*?)<\/ces>/';
$replacements[] = '<ces>$1<'.$text.'/>$2</ces>';

また、<!> quot; unknown <!> quot;からパターンを構築する場合にも注意してください。このような入力の場合、通常は preg_quote を使用することをお勧めします。例:

$patterns[] = '/<ces>(.*?)\+'.preg_quote($num).'(.*?)<\/ces>/';

変数名が与えられた場合、それは常に数値であると推測します。

他のヒント

変数は、二重引用符で宣言された文字列。そのため、二重引用符を使用します:

$patterns[]     = "/<ces>(.*?)\\+$num(.*?)<\\/ces>/";
$replacements[] = "<ces>$1<$text/>$2</ces>";

または文字列連結を使用:

$patterns[]     = '/<ces>(.*?)\+'.$num.'(.*?)<\/ces>/';
$replacements[] = '<ces>$1<'.$text.'/>$2</ces>';

変数に正規表現のメタ文字が含まれる可能性がある場合は、 preg_quote も確認する必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top