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);
?>
Таким образом, вам даже не нужно иметь дело с регулярными выражениями.
Примечание: он не будет десериализовать кусок строки, как в вашем примере, подайте его целиком.