Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 27.03.2013, 15:11
Интересующийся
Отправить личное сообщение для vostok Посмотреть профиль Найти все сообщения от vostok
 
Регистрация: 19.11.2012
Сообщений: 18

Как распарсить строку?
Есть строки:
"array(), array('example' => array(0 => 'one', 1 => 'two', 3 => '...'), 'other' => '...'), TRUE"
"'one', array('one' => 1, 'two' => 'two', 'three' => '...'), NULL"
...
Это собственно параметры функции, они могут быть самые разные.
Задача - парсинг логов трассировки php приложения.
Нужно всего лишь разбить эти параметры по отдельности.
Можно было бы разделить просто по запятым, но в параметрах есть многомерные массивы где есть запятые.
Может кто-то подскажет способ, регулярное выражение или ещё что-то. Можно php или js.
Ответить с цитированием
  #2 (permalink)  
Старый 28.03.2013, 06:58
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

eval($str) ?
Ответить с цитированием
  #3 (permalink)  
Старый 28.03.2013, 21:41
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

Сообщение от danik.js
eval($str) ?
и что, поможет?

Передавайте как ассоциативный массив, что мешает?
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
  #4 (permalink)  
Старый 28.03.2013, 23:00
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

nerv_, я думал задача - получить из этих строк массивы.
Вот так:
$str = "array(), array('example' => array(0 => 'one', 1 => 'two', 3 => '...'), 'other' => '...'), TRUE";

$array = eval('return array(' . $str . ');');
var_dump($array);


Не знаток PHP...
Ответить с цитированием
  #5 (permalink)  
Старый 29.03.2013, 20:47
Интересующийся
Отправить личное сообщение для vostok Посмотреть профиль Найти все сообщения от vostok
 
Регистрация: 19.11.2012
Сообщений: 18

Парсится лог файл трассировки функций, и задача разделить ту мешанину, что приходит в качестве параметров в эти функции, а это: объекты; массивы пустые, многомерные; строки; ресурсы; регвыражения и так далее, они расположены в строке через запятую. Разделить для вывода в html удобного для просмотра.
Причем проблем не было со всем кроме массивов, eval не помогает. Пришлось написать функцию которая ищет "array" и считает скобки формируя уровень вложенности распознавая тем самым эти массивы, ну и пару регулярок. Вопрос вроде бы снят. Хотя надо ещё дописывать код для учета всех случаев, например если в качестве параметра придет массив с запросами к базе данных - там тоже скобки.

Последний раз редактировалось vostok, 29.03.2013 в 20:50.
Ответить с цитированием
  #6 (permalink)  
Старый 29.03.2013, 21:26
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от vostok
eval не помогает
А с чем именно возникли проблемы?
Вставил код сюда: http://phpjs.hertzen.com/console.html и получил дамп входных параметров. Что не так?
Ответить с цитированием
  #7 (permalink)  
Старый 30.03.2013, 00:21
Интересующийся
Отправить личное сообщение для vostok Посмотреть профиль Найти все сообщения от vostok
 
Регистрация: 19.11.2012
Сообщений: 18

Сообщение от danik.js Посмотреть сообщение
А с чем именно возникли проблемы?
Вставил код сюда: http://phpjs.hertzen.com/console.html и получил дамп входных параметров. Что не так?
Логи в файл пишутся не для исполнения и там могут присутствовать вообще левые символы такие как многоточие, и ещё ряд случаев. eval эти строки не поймет. Но вобщем и это не проблема - можно подчистить. Так казалось по началу. Тем не менее eval не перестал выдавать ошибки и пришлось от него отказатсья. Он работает в цикле, 2000 итераций, сложно отловить ошибку в таких условиях.

За ссылку благодарю может пригодится, но в данном случае не подходит.
Ответить с цитированием
  #8 (permalink)  
Старый 30.03.2013, 06:48
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от vostok
За ссылку благодарю
На всякий случай: по ссылке не песочница для PHP. В песочницах eval запрещен. То - интерпретатот PHP, написанный на JS и исполняющийся в браузере. Но в нем есть ошибки, так что это не полноценный php-интерпретатор.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
скрипт бегущей строки - как сделать строку непрерывной dansury Элементы интерфейса 9 26.01.2013 04:54
Как при отладке вывести текущую строку выполнения Shm Общие вопросы Javascript 5 27.07.2012 19:38
Как перевести json строку в js массив? Tek Общие вопросы Javascript 1 25.03.2012 17:11
Как найти определенную строку в документе? Paska Events/DOM/Window 9 04.03.2010 00:08
Как частично удалить текстовую строку из набора? Nubi jQuery 2 27.12.2008 22:11