Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: нужна регулярка на проверку текста

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: является ли текст объявлением массива с глубокой вложенностью
DlTA
Отправлено: 27 Ноября, 2010 - 03:32:24
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




Необходимо проверить валидность текста перед тем как его запускать в обработчик
пример текстов которые надо проверить
PHP:
скопировать код в буфер обмена
  1.   "rsp"=>
  2.     array(
  3.       "stat"    =>  "ok",
  4.       "locations"  =>
  5.         array(
  6.             array("value"=>"region--altajskij-kraj","name"=>"Алтай ский","type"=>"regions"),
  7.             array("value"=>"region--amurskaja-oblast","name"=>"Амур ская","type"=>"regions"),
  8.             array("value"=>"region--arhangelskaja-oblast","name"=>"Арх ангел","type"=>"regions"),
  9.             array("value"=>"region--astrahanskaja-oblast","name"=>"Астрах анс","type"=>"regions"),
  10.             array("value"=>"region--belgorodskaja-oblast","name"=>"Белго род","type"=>"regions")
  11.           )
  12.     )
  13.   )


еще один пример:
PHP:
скопировать код в буфер обмена
  1. array("rsp"=> array(
  2.     "stat" => "fail",
  3.     "err"=> array(
  4.         "code" => 401,
  5.         "msg"  => "Missed \"type\" param (doc or att)"
  6.     )
  7. ))
 
 Top
JustUserR
Отправлено: 27 Ноября, 2010 - 13:07:44
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




DlTA пишет:
Необходимо проверить валидность текста перед тем как его запускать в обработчик
Предполагаемая вами схема продвеик вводимых пользователе информационных полей на предмет соответствия фиксированным допустимым списка значений - может быть реализовано посредтсвом использования функций поиска в многомерном массиве при установке собственного флага критерия совпадения


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
DlTA
Отправлено: 27 Ноября, 2010 - 15:25:35
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




к сожелению меня интересует на данный момент не вопрос "что в массиве?", а "правильно ли он оформлен?"
попытаюсь объяснить более детально суть задачи:
изначально некий удаленный сервер мне возвращает подобный текст
CODE (javascript):
скопировать код в буфер обмена
  1. "rsp":{
  2.     "stat" : "fail",
  3.     "err":{
  4.         "code" : 401,
  5.         "msg"  : "Missed \"type\" param (doc or att)"
  6.     }
  7. }}

несложными текстовыми операциями привожу его к виду

PHP:
скопировать код в буфер обмена
  1. array("rsp"=> array(
  2.   "stat" => "fail",
  3.   "err"=> array(
  4.     "code" => 401,
  5.     "msg"  => "Missed \"type\" param (doc or att)"
  6.   )
  7. ))

но в целях безопастности, а точнее устойчивости к "внешним" ошибка (малоли что мне там вернут) хотел прежде чем исользовать eval() проверить результирующаю строку на валидность.
 
 Top
ALEN
Отправлено: 27 Ноября, 2010 - 17:11:22
Post Id



Участник


Покинул форум
Сообщений всего: 1459
Дата рег-ции: Авг. 2008  
Откуда: Крым


Помог: 11 раз(а)




DlTA
какой функцией переводишь?
 
 Top
DlTA
Отправлено: 27 Ноября, 2010 - 17:27:59
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




ALEN, str_replace() - а это существенно?
 
 Top
ALEN
Отправлено: 27 Ноября, 2010 - 19:32:05
Post Id



Участник


Покинул форум
Сообщений всего: 1459
Дата рег-ции: Авг. 2008  
Откуда: Крым


Помог: 11 раз(а)




DlTA
1) Ну на будущие смотрите функцию serialize
2) Или использовать json если передача через JavaScript

Смотря какие цели я бы придерживался serialize

P.S. выходит у вас создание медленного велосипеда

(Отредактировано автором: 27 Ноября, 2010 - 19:32:53)

 
 Top
DlTA
Отправлено: 27 Ноября, 2010 - 19:55:41
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




ALEN пишет:
2) Или использовать json если передача через JavaScript

Смотря какие цели я бы придерживался serialize

P.S. выходит у вас создание медленного велосипеда
с этим понятно в принцыпе так и получается, на надо именно через php.

а вот как мне может помочь серилизация я не пойму?
 
 Top
ALEN
Отправлено: 27 Ноября, 2010 - 20:08:56
Post Id



Участник


Покинул форум
Сообщений всего: 1459
Дата рег-ции: Авг. 2008  
Откуда: Крым


Помог: 11 раз(а)




serialize и unserialize
кодируешь переменную, объект, массив в строку и передаешь куда хочешь сохраняешь в файл или как тебе удобно, потом читаешь раскодируешь и снова прежний вид, без всяких там eval и другого вредоносного кода.
 
 Top
JustUserR
Отправлено: 27 Ноября, 2010 - 20:48:07
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




DlTA пишет:
Хотел прежде чем исользовать eval() проверить результирующаю строку на валидность
В качестве возможного варианта решения предполагаемой вами задачи заключающей в осуществении получения информационного поля из удаленного источника и проведения его проверки на допустимость входящих компонентов - возможно применение возможностей управялемой безопасной интерпретации указанного PHP-кода в отдельном потоке посредством функциональности модуля runkit


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
DlTA
Отправлено: 27 Ноября, 2010 - 20:53:11
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




ALEN, )) серелизация мне точно не подходит, инфу генерит не мой сервак.
а вообще спасибо, за уточнение
все решается использованием json_encode() и json_decode()
хотя для php 4.х пришлось поизвращаться
ссылка на класс
и описание как правильно это дело подключить
 
 Top
JustUserR
Отправлено: 27 Ноября, 2010 - 21:00:25
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




DlTA пишет:
Серелизация мне точно не подходит, инфу генерит не мой сервак
В случае если целевая структура получаемых информационных полей являеться фиксированных и заранее известной - то для организации безопасного разбора входных данных достаточно использовать покомпонентное разбиение исходной строки - и сохранения значений полей в соответствующую структуру на стороне приложения


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
DlTA
Отправлено: 27 Ноября, 2010 - 21:49:29
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




JustUserR пишет:
если целевая структура получаемых информационных полей являеться фиксированных и заранее известной - то ...
) это было-бы очень просто

(Отредактировано автором: 27 Ноября, 2010 - 21:50:31)

 
 Top
OrmaJever
Отправлено: 27 Ноября, 2010 - 22:10:44
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




DlTA пишет:
Необходимо проверить валидность текста перед тем как его запускать в обработчик

DlTA а что имено проверять?))) Я в первом примере увидел четырёх мерный масив но не понял какой текст и на какую валидность проверять?


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
DlTA
Отправлено: 27 Ноября, 2010 - 22:33:52
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




OrmaJever, в данном случае приведен пример "правильного" текста

впринцыпе задача решена

но мне все еше интересно как правильно пользоваться подмасками в регулярных и как задавать проверку древовидного текста (xml, html, json, ...)
 
 Top
JustUserR
Отправлено: 29 Ноября, 2010 - 15:46:08
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




DlTA пишет:
Это было-бы очень просто
Возможность организации передачи информационных полей в рамках фиксированного формата в действительности является простым и эфективнм средством - в качестве схожего метода передачи данных с широким распространением может использоваться urlencode-хранение информационных полей в кодированном представлении В случае если осуществления добавления требования к идентификатору передаваемой переменной как к пути ее представления в целевой структуре - аналогичая схема используется при применении идентификаторов типа name="arr[]" для автоматического создания индесных массивов в PHP-скрипте

(Отредактировано автором: 29 Ноября, 2010 - 15:47:33)



-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Регулярные выражения »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB