【问题标题】:How to replace 2 strings (with eachother) simultaneously in PHP如何在 PHP 中同时替换 2 个字符串(彼此)
【发布时间】:2011-01-18 03:38:16
【问题描述】:

我正在尝试做的事情非常简单,但我希望做到最有效,最好使用 php 内置 fns。

$str = '1234';
echo replace_function(array('1','3'),array('3','1'),$str);

// output: 3214

str_replace,preg_replace 会产生 1214,这意味着它会遍历数组,替换匹配的字符串。我正在寻找同时“切换”这两个(或更多)字符串的解决方案。

有什么想法吗?

【问题讨论】:

    标签: php string function replace


    【解决方案1】:

    你需要字符串翻译: http://php.net/manual/en/function.strtr.php

    <?php
    $trans = array("hello" => "hi", "hi" => "hello");
    echo strtr("hi all, I said hello", $trans);
    // = hello all, I said hi
    ?> 
    

    【讨论】:

    • @Sergi,+1,但请务必注明您从哪里获得示例,以及 2,提供使用 OP 代码的示例总是很好。
    • 小心误报。
    • 我知道应该有这样简单的东西。非常感谢!
    【解决方案2】:
    <?php
    
    $subject = '1234';
    $result = preg_replace('/(1)(2)(3)(4)/si', '$3$2$1$4', $subject);
    var_dump($result);
    
    ?>
    

    您可以将模式更改为更通用的模式,例如 '/(\d)(\d)(\d)(\d)/'。

    【讨论】:

    • 这不是我想要的。我不知道替换字符串的顺序。像 3211123 这样任意的东西应该无缝地变成 1233321。
    • 这仅适用于 '1235' 的特定情况,您不妨说 $result = '3214' Using '/(\d)(\d)(\d)(\d) /' 将任何 4 位数字更改为 '3214'
    • 很遗憾得到“-2”而不是“谢谢”。很高兴知道 strtr()。
    猜你喜欢
    • 2010-10-06
    • 1970-01-01
    • 1970-01-01
    • 2021-09-13
    • 1970-01-01
    • 1970-01-01
    • 2017-12-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多