Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> String To Array? кто нибудь делал? 
V
    Опции темы
Sanchezzz
Дата 16.12.2008, 13:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1670
Регистрация: 19.11.2006
Где: Voronezh

Репутация: 41
Всего: 60



В общем есть конструкция
в строке содержится "array('var1'=>'значение' , array(0=>1,2,3,4 ... ) , ... )"

ее я получаю в результате парсинга php документа.

Сам вопрос если способ кроме eval сделать этот массив реальным. Нужна функция из строки содержавшею конструкцию массива в массив?



--------------------
Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS.
PM MAIL Skype GTalk   Вверх
skyboy
Дата 16.12.2008, 13:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



Цитата(Sanchezzz @  16.12.2008,  12:14 Найти цитируемый пост)
Сам вопрос если способ кроме eval сделать этот массив реальным.

да. альтернатива eval - записать данные в файл между "<?php" и "?>", а затем заинклудить этот файл.
Цитата(Sanchezzz @  16.12.2008,  12:14 Найти цитируемый пост)
Нужна функция из строки содержавшею конструкцию массива в массив?

чего-чего?
PM MAIL   Вверх
teroni
Дата 16.12.2008, 13:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 381
Регистрация: 15.5.2007
Где: Днепропетровск

Репутация: 8
Всего: 22



Цитата(Sanchezzz @  16.12.2008,  13:14 Найти цитируемый пост)
если способ кроме eval сделать этот массив реальным
Напрямую вряд ли... Можно конечно регулярками распарсить, но это изврат smile
А чем eval не устраивает?
PM MAIL   Вверх
Sanchezzz
Дата 16.12.2008, 14:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1670
Регистрация: 19.11.2006
Где: Voronezh

Репутация: 41
Всего: 60



я покачто сделал на eval. 

хочется найти и еще способ, чтобы потом легко можно было поменять значения и записать обратно в файл.

Это сообщение отредактировал(а) Sanchezzz - 16.12.2008, 14:03


--------------------
Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS.
PM MAIL Skype GTalk   Вверх
igm
Дата 18.12.2008, 18:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 28.2.2008

Репутация: нет
Всего: -2



Может подойдут такие функции как serialize и unserialize. Первая упаковывает массив в определенный формат, а вторая естественно распаковывает.
К примеру, после того как распарсили php код сохраняем его в упакованном виде в файл, ну а когда надо распаковываем и получаем реальный массив. 

PM MAIL WWW   Вверх
Sanchezzz
  Дата 18.12.2008, 21:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1670
Регистрация: 19.11.2006
Где: Voronezh

Репутация: 41
Всего: 60



igm первый пост читал? 
Если я сделаю по твоему способу то я проделаю тройную работу.
А для меня это не есть хорошо.

И мне в файл не нужно уповывать, когда я из php скрипта выдираю строку массива.
Я пока что остановился на первом варианте евал.
Всем спасибо за ответы и советы.


--------------------
Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS.
PM MAIL Skype GTalk   Вверх
Sanchezzz
  Дата 25.6.2009, 15:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1670
Регистрация: 19.11.2006
Где: Voronezh

Репутация: 41
Всего: 60



возращюсь опять к этому вопросу... решил немного подшаманить велик.

есть регулярка 
preg_match("#\s*\\\$core-\>initComponent\s*\(\s*(\'|\")([a-zA-Z0-9\s_])+(\'|\")+([\s*|,])+([\s*])+array+([\s*]|\()+(.*?)\)\);#is",substr($text,$st-1,$st+$kn+2),$math))

которая возражает массив...
мне нужно как то этот строку превратить в массив но без eval кто знает способ?
array ( 'template'=> 'horizontal-lv2','id_menu'=> '1');

покачто дело крутится вот так
Код

if(preg_match("#\s*\\\$core-\>initComponent\s*\(\s*(\'|\")([a-zA-Z0-9\s_])+(\'|\")+([\s*|,])+([\s*])+array+([\s*]|\()+(.*?)\)\);#is",substr($text,$st-1,$st+$kn+2),$math)){
eval("\$arr = array(".$math[7].');');
}

регулярка важрашяет 
$math[7] = 'template'=> 'horizontal-lv2','id_menu'=> '1'

eval 
запись в файл а затем это подрубить отпадает
создание виртуальной функции и передача ей параметра тоже отпадает...

если кто хочет переписать по удобнее регклярку то искомая строка такова:
Код

<?$core->initComponent('menu_component', array('template'=> 'horizontal-lv2','id_menu'=> '1',));?>



--------------------
Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS.
PM MAIL Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0879 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.