15

「foo boo foo boo」という文字列があるとします。すべての foo を boo に、boo を foo に置き換えたいとします。期待される出力は「boo foo boo foo」です。私が得るのは「foo foo foo foo」です。現在の出力ではなく、期待される出力を取得するには?

    $a = "foo boo foo boo";
    echo "$a\n";
    $b = str_replace(array("foo", "boo"), array("boo", "foo"), $a);
    echo "$b\n";
    //expected: "boo foo boo foo"
   //outputs "foo foo foo foo"
4

6 に答える 6

30

strtrを使用する

マニュアルから:

2 つの引数を指定する場合、2 番目の引数は array('from' => 'to', ...) の形式の配列にする必要があります。戻り値は、配列キーのすべてのオカレンスが対応する値に置き換えられた文字列です。最長のキーが最初に試行されます。部分文字列が置換されると、その新しい値は再度検索されません。

この場合、空のキーがない限り、キーと値の長さは任意です。さらに、戻り値の長さは str の長さと異なる場合があります。ただし、この関数は、すべてのキーが同じサイズの場合に最も効率的です。

$a = "foo boo foo boo";
echo "$a\n";
$b = strtr($a, array("foo"=>"boo", "boo"=>"foo"));
echo "$b\n"; 

出力

foo boo foo boo
boo foo boo foo

活動中

于 2013-07-25T06:32:38.463 に答える
4

おそらく、次のような一時的な値を使用してcoo.

サンプルコードはこちら

$a = "foo boo foo boo";
echo "$a\n";
$b = str_replace("foo","coo",$a);
$b = str_replace("boo","foo",$b);
$b = str_replace("coo","boo",$b);
echo "$b\n";
于 2013-07-25T06:32:25.167 に答える
3

最初foozoo。その後boofoo、そして最後zooboo

$search = array('foo', 'boo', 'zoo');
$replace = array('zoo', 'foo', 'boo');
echo str_replace($search, $replace, $string);
于 2013-07-25T06:33:30.953 に答える
1

それを試してみてください

$a = "foo boo foo boo";
echo "$a\n";
$b = str_replace(array("foo", "boo","[anything]"), array("[anything]", "foo","boo"), $a);
echo "$b\n";
于 2013-07-25T06:34:35.133 に答える
1
$a = "foo boo foo boo";
echo "$a\n";
$a = str_replace("foo", "x", $a);
$a = str_replace("boo", "foo", $a);
$a = str_replace("x", "boo", $a);
echo "$a\n";

$a には "x" は使用できないことに注意してください

于 2013-07-25T06:33:10.897 に答える