1

括弧の内側ではなく外側にあるテキストを置き換えます。

私はこのように試しました

  $pro_name = samsung galaxy s3 (s3);
    $new_pro_name = preg_replace("/\b(s3)\b/i",***s5****,$pro_name);
    echo $new_pro_name;

期待される結果:

samsung galaxy ***s5**** (s3)

出力: samsung galaxy ***s5*** (***s5***)

4

4 に答える 4

1

(正規表現で)意味がある場合は、とでエスケープしてみて\(ください\)

于 2013-03-27T10:36:42.257 に答える
1

これを試して :

  $pro_name     = "samsung galaxy s3 (s3)";
  $new_pro_name = preg_replace("/(.*)s3(.*)\((.*)\)/i","$1s5$2($3)",$pro_name);
  echo $new_pro_name;

出力:samsung galaxy s5 (s3)

参照:http://php.net/manual/en/function.preg-replace.php

于 2013-03-27T10:42:12.447 に答える
1

これを試して:s3+(?=[^()]*(\(|$))

角かっこを確認するために先読みを使用しています。

例:

$pro_name = samsung galaxy s3 (s3);
$new_pro_name = preg_replace("/s3+(?=[^()]*(\(|$))/g", 's5', $pro_name);
echo $new_pro_name;
于 2013-03-27T10:49:28.363 に答える
1

ネガティブルックバックとルックアヘッドの使用http://www.regular-expressions.info/lookaround.html

以下を使用できます。

$pro_name = 'samsung galaxy s3 (s3)';
$new_pro_name = preg_replace("/(?<!\()s3(?!\))/i", '***s5****', $pro_name);
echo $new_pro_name;

(?<!x)'x'であってはならない前の文字を振り返る注。あなたの場合、これは必要です(が、これは特殊文字であるため、エスケープする必要があります\(

xで(?!x)はない文字を探しています。

正規表現で使用される特殊文字の内訳については、phpのpreg_quote(); http://php.net/manual/en/function.preg-quote.phpを参照してください。

于 2013-03-27T10:54:27.453 に答える