Ereg_replace со строкой

У меня есть такая строка:

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

Но я не работаю. Вы можете мне помочь? заранее спасибо

3 ответа

Не использовать 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

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

Похоже, вы имеете дело с массивом PHP или объектом, сериализованным в строку. Я рекомендую запустить:

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

Таким образом, вам даже не нужно иметь дело с регулярными выражениями.

Примечание: он не будет десериализовать кусок строки, как в вашем примере, подайте его целиком.

Другие вопросы по тегам