0

我有一个这样的字符串:

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

但我不工作。你能帮助我吗?先感谢您

4

3 回答 3

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

于 2013-12-21T11:36:03.573 回答
0

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

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

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

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

于 2013-12-21T11:44:12.827 回答
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;
于 2013-12-21T11:34:37.540 回答