Анастасия Новичок 8 Фев 2009 #1 Regexp, выборка значений из строки Форумчане, помогите, пож-та, написть паттерн для выборки значений в кавычках из такой строки: var Time_Arr = [ "2008,08,16,19,45,00","2008,08,16,22,00,00"] Заранее спасибо!
Regexp, выборка значений из строки Форумчане, помогите, пож-та, написть паттерн для выборки значений в кавычках из такой строки: var Time_Arr = [ "2008,08,16,19,45,00","2008,08,16,22,00,00"] Заранее спасибо!
Balancer Новичок 8 Фев 2009 #2 Вопрос сформулирован недостаточно чётко. В примере уже всё выбрано. Один элемент массива - одно значение.
Вопрос сформулирован недостаточно чётко. В примере уже всё выбрано. Один элемент массива - одно значение.
Анастасия Новичок 8 Фев 2009 #3 Извиняюсь, и привожу разъяснения. Нужно из приведенной строки получить массив php вида $data = array("2008,08,16,19,45,00", "2008,08,16,22,00,00"); Если это можно сделать без RegExp буду только рада =)
Извиняюсь, и привожу разъяснения. Нужно из приведенной строки получить массив php вида $data = array("2008,08,16,19,45,00", "2008,08,16,22,00,00"); Если это можно сделать без RegExp буду только рада =)
Balancer Новичок 8 Фев 2009 #4 Если строка гарантирована, то можно, например, так: PHP: $str = 'var Time_Arr = [ "2008,08,16,19,45,00","2008,08,16,22,00,00"]'; if(preg_match('/\[(.+)\]/', $str, $m)) eval("\$result = array({$m[1]});"); print_r($result); Если данные могут быть небезопасными, то потребуется цикл: PHP: $result = array(); if(preg_match('/\[(.+)\]/', $str, $m)) foreach(explode('","', $m[1]) as $x) $result[] = trim($x, ' "'); Наконец, можно задействовать preg_match_all: PHP: if(preg_match_all('/("[^"]+")/', $str, $m)) $result = array_map(create_function('$s', 'return trim($s, \' "\');'), $m[0]);
Если строка гарантирована, то можно, например, так: PHP: $str = 'var Time_Arr = [ "2008,08,16,19,45,00","2008,08,16,22,00,00"]'; if(preg_match('/\[(.+)\]/', $str, $m)) eval("\$result = array({$m[1]});"); print_r($result); Если данные могут быть небезопасными, то потребуется цикл: PHP: $result = array(); if(preg_match('/\[(.+)\]/', $str, $m)) foreach(explode('","', $m[1]) as $x) $result[] = trim($x, ' "'); Наконец, можно задействовать preg_match_all: PHP: if(preg_match_all('/("[^"]+")/', $str, $m)) $result = array_map(create_function('$s', 'return trim($s, \' "\');'), $m[0]);
Анастасия Новичок 8 Фев 2009 #6 Огромное спасибо! С учетом доп. задач, воспользовалась вторым вариантом с preg_match.
Glazyrin Sergey Новичок 8 Фев 2009 #7 Если строка в таком виде, то что то мне говорит что это json Или я не прав ? Можете воспользоваться json_decode($ваша строка, true); -~{}~ 08.02.09 22:11: Упс извините можно просто сделать $string = preg_replace('/.*?=/', '', $string); и потом $array = json_decode($string, true);
Если строка в таком виде, то что то мне говорит что это json Или я не прав ? Можете воспользоваться json_decode($ваша строка, true); -~{}~ 08.02.09 22:11: Упс извините можно просто сделать $string = preg_replace('/.*?=/', '', $string); и потом $array = json_decode($string, true);