2

次のような文字列があります。

$String = "Size,Please Select,L Kids,XL Kids,S,M,L,XL"

「、XL」を「、XL (在庫切れ)」に置き換えたいのですが、「XL キッズ」も置き換えたくありません。

だから私は次のような結果が必要です:

$String_replaced ="Size,Please Select,L Kids,XL Kids,S,M,L,XL (Out Of Stock)"

文字列置換を使用しようとしましたが、これは機能しません。preg 置換を使用する必要があることは理解していますが、その方法がわかりません。

誰でも助けることができますか?

4

4 に答える 4

1

このルックアラウンド ベースの正規表現は機能するはずです。

$repl = preg_replace('/(?<=^|,)\bXL\b(?=,|$)/', 'XL (Out of Stock)', $String);

XLこれは単語境界で囲まれたものに一致します。

(?<=^|,) - Make sure XL is preceded by comma or at the start of line
(?=,|$) - Make sure XL is followed by comma or at the end of line
于 2013-08-21T16:24:56.407 に答える
0

私は否定的な先読みを使用します:

$String = "Size,Please Select,L Kids,XL Kids,S,M,L,XL";
$String_replaced  = preg_replace('/\bXL\b(?! Kids)/', 'XL (Out of Stock)', $String);
echo $String_replaced ,"\n";

出力:

Size,Please Select,L Kids,XL Kids,S,M,L,XL (Out of Stock)
于 2013-08-22T08:35:40.777 に答える