我有一个这样的字符串:
$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);
但我不行。你能帮助我吗? 提前谢谢
答案 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},
答案 2 :(得分:0)
看起来您正在处理序列化为字符串的PHP数组或对象。我建议跑步:
<?php
$arrayOrObject = unserialize($theEntireStringYouGot);
print_r($arrayOrObject);
?>
这样你甚至可能根本不需要处理正则表达式。
注意:它不会像你的例子那样反序列化一段字符串,把它全部输入。