带字符串的Ereg_replace

时间:2013-12-21 11:27:28

标签: regex ereg-replace

我有一个这样的字符串:

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

我想将其替换为:

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

我想用它来使用ereg_replace并替换这种短语:

“我:[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);

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

3 个答案:

答案 0 :(得分:0)

$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;

答案 1 :(得分:0)

请勿将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

答案 2 :(得分:0)

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

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

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

注意:它不会像你的例子那样反序列化一段字符串,把它全部输入。