2012-05-26 4 views
1

У меня возникли трудности с разбором строки. Это структура, у меня есть:Разбор строки в кавычках после определенной строки

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

То, что я хочу сделать, это положить каждый результат в собственном переменном, так что я получаю $ названия, $ года, $ выполнение и так далее, в конце концов.

Я знаю, для этого есть много разных функций 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

'Взорваться' - это плохое решение здесь. Ваш код будет разбит на '' Title: ":" foo "'. – Robik

+0

@ Donut Я не видел никаких «Название:»: ... только «Название»: ... вот почему я использую explode. Я предполагаю, что полуколония не будет использоваться в ключе или значении. Это риск, когда у вас недостаточно информации об источнике данных. –

+0

Вы должны отметить это в своем ответе. Кроме того, если вы публикуете anwers, сообщение good beacue OP не знает этого и может вернуться снова, что он не работает. – Robik