2012-05-26 75 views
1

解析字符串時遇到困難。這是我的結構:解析某個字符串後引號內的字符串

"Title":"Avatar","Year":"2009","Rated":"PG-13","Released":"18 Dec 2009","Runtime":"2 h 42 min" 

我想要做的就是把在自己的變量每個結果讓我得到$標題,$年,$運行時間等進行到底。

我知道,這裏有很多不同的PHP函數,但是在嘗試了很多PHP函數之後,沒有得到我想要的結果,我只需要一些幫助。

+0

您使用了哪些功能? –

回答

1

因爲很少修改您的字符串後,你可以把它JSON字符串,通過添加尾隨{}。並呼籲改性殼聚糖字符串json_decode功能:

$str = '"Title":"Avatar","Year":"2009","Rated":"PG-13","Released":"18 Dec 2009","Runtime":"2 h 42 min"'; 
$arr = json_decode("{{$str}}", true); // True to make it array, not object 

// $arr contains parsed data 

它的工作原理,只是看this demo。您可以使用變量,如:

echo $arr["Title"]; 

但如果你真的需要$title我不建議這樣做),可以使用extract功能

extract($arr); 

,您可以訪問它,如:

echo $title; 
+0

+1,因爲它比'explode()'看起來好得多,我很高興在這裏看到更多年輕的波蘭人。 :) 做得很好! – Pateman

1

你可以嘗試以下方法:

<?php 
    $string = "Title":"Avatar","Year":"2009","Rated":"PG-13","Released":"18 Dec 2009","Runtime":"2 h 42 min" 
    $segments = explode(',', $string); 
    foreach($segments as $segment) { 
     list($key, $value) = explode(':', $segment); 
     echo $key, ' ', $value; 
    } 
+0

'explode'在這裏不好解決。你的代碼將在'「Title:」:「foo」'中斷。 – Robik

+0

@Donut我沒有看到任何「標題:」:...只有「標題」:...這就是爲什麼我使用爆炸。我假定分號不會用在關鍵字或值中。當您沒有足夠的數據來源信息時,這是風險 –

+0

您應該在答案中註明。另外,如果你發佈anwers,發佈好beacue OP不知道,並可能再次回來,它不起作用。 – Robik