2012-03-28 1 views
0

Мне нужно извлечь имя из большого пакета данных.Шаблон для заданного символа

$frame = '\"Amy Dardomba\":1,\"Kisb Muj Lorence\":1,\"Apkio Ronald\":1,.... 

Существует более 200-300 наименований, которые я должен разместить в массиве.

я пытался,

preg_match_all('#\/"(.*)\/":1#',$frame,$imn); 
print_r($imn); 

, но оно не работает. Пожалуйста, помогите мне .

Благодаря

ответ

1

Эти данные для меня похожи на некоторые изнасилованные JSON. Если предположить, что формат вашего кода равно все так, как описано выше, попробуйте следующее:

// Two pass approach to interpollate escape sequences correctly 
$toJSON = '{"json":"{'.$frame.'}"}'; 
$firstPass = json_decode($toJSON, TRUE); 
$secondPass = json_decode($firstPass['json'], TRUE); 

// Just get the keys of the resulting array 
$names = array_keys($secondPass); 

print_r($names); 
/* 
    Array 
    (
     [0] => Amy Dardomba 
     [1] => Kisb Muj Lorence 
     [2] => Apkio Ronald 
     ... 
) 
*/ 

See it working

0

\/ будет соответствовать / характер, но вы должны соответствовать \ так использовать \\ вместо:

preg_match_all('#\\"(.*?)\\":1#',$frame,$imn); 

Также добавлен ? для нежадным регулярных выражений.

0
$input = '\"Amy Dardomba\":1,\"Kisb Muj Lorence\":1,\"Apkio Ronald\":1'; 
preg_match_all('#"([a-zA-Z\x20]+)"#', stripslashes($input), $m); 

взгляд в $m[1]

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

  • Нет связанных вопросов^_^