【问题标题】:Ereg_replace with a String用字符串替换 Ereg_replace
【发布时间】:2014-01-10 04:38:42
【问题描述】:

我有一个这样的字符串:

$str = "{gfgd}i:123;a:7:{gfgd}i:5;a:35:"; 

我想将其替换为:

$str = "{gfgd},{gfgd},"; 

我想用 ereg_replace 来代替这种短语:

"i:[0-9]a:[0-9]:" 变成 "," 符号。

我试试:

     $str = "i:143;a:5:{gfgd}i:123;a:7:{gfgd}i:5;a:35:";  
     $text = ereg_replace("/^i:[0-9]+;a:[0-9]+:+$", ",", $str);

但我不工作。你能帮助我吗? 提前谢谢你

【问题讨论】:

    标签: regex ereg-replace


    【解决方案1】:
    $str = "i:143;a:5:{gfgd}i:123;a:7{gfgd}i:5;a:35";  
    $str = ereg_replace("\}[^\{]+\{", "},{", $str); // replace between } and { with },{
    $str = ereg_replace("^[^\{]+", "", $str); // remove from first
    $str = ereg_replace("[^\}]+$", ",", $str); // remove from last 
    print $str;
    

    【讨论】:

      【解决方案2】:

      不要将ereg_replace 用作This function has been DEPRECATED as of PHP 5.3.0

      改用preg_replace,你的正则表达式是错误的。移除锚点^ and $

      $text = preg_replace('/i:[0-9]+;a:[0-9]+:?/', ",", $str);
      //=> ,{gfgd},{gfgd},
      

      在线演示:http://ideone.com/W2P55n

      【讨论】:

        【解决方案3】:

        看起来您正在处理一个 PHP 数组或序列化为字符串的对象。我建议运行:

        <?php
            $arrayOrObject = unserialize($theEntireStringYouGot);
            print_r($arrayOrObject);
        ?>
        

        这样你可能根本不需要处理正则表达式。

        注意:它不会像您的示例中那样反序列化一段字符串,而是将整个内容提供给它。

        【讨论】:

        • 好的,谢谢 - 反序列化效果很好,但如果我想在 javascript 中使用它?
        • 使用 json_encode 将 PHP 中的数组序列化为 JSON,然后在 JavaScript 中解码 JSON。除非您使用 jQuery 或类似的内置库,否则您可以使用 JSON2 库。
        猜你喜欢
        • 2016-02-05
        • 2011-06-25
        • 2011-04-08
        • 1970-01-01
        • 1970-01-01
        • 2017-03-23
        • 1970-01-01
        • 2023-03-04
        • 2011-06-13
        相关资源
        最近更新 更多