2013-12-21 5 views
0

У меня есть строка, как это: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); 

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

ответ

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

0

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

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

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

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

+0

ОК, спасибо - unserialize работает отлично, но если бы я хотел использовать его в javascript? – Ir3nicus

+0

Используйте json_encode для сериализации массива в PHP в JSON, а затем декодируйте JSON в JavaScript. Существует библиотека JSON2, которую вы можете использовать для этого, если вы не используете jQuery или как то, что оно встроено. –

Смежные вопросы