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
Форумы портала PHP.SU :: Версия для печати :: нужна регулярка на проверку текста
Форумы портала PHP.SU » PHP » Регулярные выражения » нужна регулярка на проверку текста

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

1. DlTA - 27 Ноября, 2010 - 03:32:24 - перейти к сообщению
Необходимо проверить валидность текста перед тем как его запускать в обработчик
пример текстов которые надо проверить
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. ))
2. JustUserR - 27 Ноября, 2010 - 13:07:44 - перейти к сообщению
DlTA пишет:
Необходимо проверить валидность текста перед тем как его запускать в обработчик
Предполагаемая вами схема продвеик вводимых пользователе информационных полей на предмет соответствия фиксированным допустимым списка значений - может быть реализовано посредтсвом использования функций поиска в многомерном массиве при установке собственного флага критерия совпадения
3. DlTA - 27 Ноября, 2010 - 15:25:35 - перейти к сообщению
к сожелению меня интересует на данный момент не вопрос "что в массиве?", а "правильно ли он оформлен?"
попытаюсь объяснить более детально суть задачи:
изначально некий удаленный сервер мне возвращает подобный текст
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() проверить результирующаю строку на валидность.
4. ALEN - 27 Ноября, 2010 - 17:11:22 - перейти к сообщению
DlTA
какой функцией переводишь?
5. DlTA - 27 Ноября, 2010 - 17:27:59 - перейти к сообщению
ALEN, str_replace() - а это существенно?
6. ALEN - 27 Ноября, 2010 - 19:32:05 - перейти к сообщению
DlTA
1) Ну на будущие смотрите функцию serialize
2) Или использовать json если передача через JavaScript

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

P.S. выходит у вас создание медленного велосипеда
7. DlTA - 27 Ноября, 2010 - 19:55:41 - перейти к сообщению
ALEN пишет:
2) Или использовать json если передача через JavaScript

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

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

а вот как мне может помочь серилизация я не пойму?
8. ALEN - 27 Ноября, 2010 - 20:08:56 - перейти к сообщению
serialize и unserialize
кодируешь переменную, объект, массив в строку и передаешь куда хочешь сохраняешь в файл или как тебе удобно, потом читаешь раскодируешь и снова прежний вид, без всяких там eval и другого вредоносного кода.
9. JustUserR - 27 Ноября, 2010 - 20:48:07 - перейти к сообщению
DlTA пишет:
Хотел прежде чем исользовать eval() проверить результирующаю строку на валидность
В качестве возможного варианта решения предполагаемой вами задачи заключающей в осуществении получения информационного поля из удаленного источника и проведения его проверки на допустимость входящих компонентов - возможно применение возможностей управялемой безопасной интерпретации указанного PHP-кода в отдельном потоке посредством функциональности модуля runkit
10. DlTA - 27 Ноября, 2010 - 20:53:11 - перейти к сообщению
ALEN, )) серелизация мне точно не подходит, инфу генерит не мой сервак.
а вообще спасибо, за уточнение
все решается использованием json_encode() и json_decode()
хотя для php 4.х пришлось поизвращаться
ссылка на класс
и описание как правильно это дело подключить
11. JustUserR - 27 Ноября, 2010 - 21:00:25 - перейти к сообщению
DlTA пишет:
Серелизация мне точно не подходит, инфу генерит не мой сервак
В случае если целевая структура получаемых информационных полей являеться фиксированных и заранее известной - то для организации безопасного разбора входных данных достаточно использовать покомпонентное разбиение исходной строки - и сохранения значений полей в соответствующую структуру на стороне приложения
12. DlTA - 27 Ноября, 2010 - 21:49:29 - перейти к сообщению
JustUserR пишет:
если целевая структура получаемых информационных полей являеться фиксированных и заранее известной - то ...
) это было-бы очень просто
13. OrmaJever - 27 Ноября, 2010 - 22:10:44 - перейти к сообщению
DlTA пишет:
Необходимо проверить валидность текста перед тем как его запускать в обработчик

DlTA а что имено проверять?))) Я в первом примере увидел четырёх мерный масив но не понял какой текст и на какую валидность проверять?
14. DlTA - 27 Ноября, 2010 - 22:33:52 - перейти к сообщению
OrmaJever, в данном случае приведен пример "правильного" текста

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

но мне все еше интересно как правильно пользоваться подмасками в регулярных и как задавать проверку древовидного текста (xml, html, json, ...)
15. JustUserR - 29 Ноября, 2010 - 15:46:08 - перейти к сообщению
DlTA пишет:
Это было-бы очень просто
Возможность организации передачи информационных полей в рамках фиксированного формата в действительности является простым и эфективнм средством - в качестве схожего метода передачи данных с широким распространением может использоваться urlencode-хранение информационных полей в кодированном представлении В случае если осуществления добавления требования к идентификатору передаваемой переменной как к пути ее представления в целевой структуре - аналогичая схема используется при применении идентификаторов типа name="arr[]" для автоматического создания индесных массивов в PHP-скрипте

 

Powered by ExBB FM 1.0 RC1