2012-05-26 174 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