0

文字列Action - [N]ew、[U]pdate、または [D]elete : Nを「Action - [N]ew、[U]pdate、または [D]elete : U」に置き換える必要があります。どういうわけか preg_replace を使用しても機能しません。それは同じままです。

私のコードは次のようになります

$action = Action - '[N]ew, [U]pdate, or [D]elete : U';
$line = preg_replace("/(Action - [N]ew, [U]pdate, or [D]elete : N)/",$action,$line);
4

4 に答える 4

3

[および]は、正規表現の特殊文字です。それらを一致させたい場合は、それらをエスケープする必要があります。

"/(Action - \[N\]ew, \[U\]pdate, or \[D\]elete : N)/"

エスケープせずに、式内[および内]のすべての文字の 1 つに一致します。したがって、元のケースで"[N]ew"は、一致して"New"いました。だった場合は、または"[NP]ew"と一致します。"New""Pew"

于 2009-07-31T15:23:46.377 に答える
2

その必要はありませんpreg_replace。シンプルstr_replaceで十分です:

$action = 'Action - [N]ew, [U]pdate, or [D]elete : U';
$line = str_replace('Action - [N]ew, [U]pdate, or [D]elete : N', $action, $line);
于 2009-07-31T15:26:59.757 に答える
2

カップルの問題:

1) 最初の行に構文エラーがあります。あなたの引用符は間違っています。そのはず:

 $action = "Action - [N]ew, [U]pdate, or [D]elete : N";

2)正規表現で角括弧 ([および)をエスケープする必要があります。]または、次のこともできます。

 $line = preg_replace("/N$/", "U", $action);

したがって、それらを組み合わせる:

 $action = "Action - [N]ew, [U]pdate, or [D]elete : N";
 $line = preg_replace("/N$/", "U", $action);
于 2009-07-31T15:30:44.867 に答える
0

「[」と「]」をエスケープしてみてください

于 2009-07-31T15:23:46.487 に答える