在字符串php中交换两个单词

cod*_*eak 12 php str-replace

假设有一个字符串"foo boo foo boo"我想用fo替换所有foo和boo的boo.预期的输出是"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"
Run Code Online (Sandbox Code Playgroud)

Ora*_*ill 25

使用strtr

从手册:

如果给出两个参数,则第二个应该是表单数组中的数组('from'=>'到',...).返回值是一个字符串,其中所有出现的数组键都已被相应的值替换.将首先尝试最长的密钥.替换子字符串后,将不再搜索其新值.

在这种情况下,如果没有空键,则键和值可以具有任何长度; 另外,返回值的长度可能与str的长度不同.但是,当所有键具有相同的大小时,此功能将是最有效的.

$a = "foo boo foo boo";
echo "$a\n";
$b = strtr($a, array("foo"=>"boo", "boo"=>"foo"));
echo "$b\n"; 
Run Code Online (Sandbox Code Playgroud)

输出

foo boo foo boo
boo foo boo foo
Run Code Online (Sandbox Code Playgroud)

在行动中

  • @Orangepill 我以前没有使用过 `strtr`。我喜欢它! (2认同)