2013-12-21 63 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]:」into「,」sign。

我試試吧:

 $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

好的,謝謝 - 反序列化的作品完美,但如果我想在JavaScript中使用它? – Ir3nicus

+0

使用json_encode將PHP中的數組序列化爲JSON,然後解碼JavaScript中的JSON。有JSON2庫,你可以用它,除非你使用jQuery或類似的內置它。 –