[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Выловить название элемента
mad/crs
Задача:
выловить название элемента и атрибуты в ХТМЛ форме с учётом тово что внутри атрибута возможно экранирование " и ' при помощи \, пример:

<input type="text" name="login" value="some \"text\""/>

в результате:
[type]="text"
[name]="login"
[value]="some \"text\""

Вроде написал регулярку и проверил в PCRE.RU - работает
оформил в код и неработает.

Сама регулярка:

@(\w+?)=((\"|\')(?:\\?.)*?\3)@se

Кусок кода:
preg_replace(
'@(\w+?)=((\"|\')(?:\\?.)*?\3)@se',
'$atributes[\'\\1\']=trim(\'\\2\',\'\"\')',
$e2);


Помогите люди добрые! smile.gif[quote]




Спустя 18 минут, 28 секунд (15.04.2010 - 12:09) twin написал(а):
Да не вопрос, чего же не помочь хорошему человеку... Это мы за всегда рады. Поможем, чего уж там. У нас не застрянет...

Информативный ответ? Примерно такой, как название темы. Смени название на осмысленное, пока не забанили))

Спустя 5 минут, 2 секунды (15.04.2010 - 12:14) mad/crs написал(а):
Сорри.. непойму как поменять название..

Спустя 5 минут, 27 секунд (15.04.2010 - 12:19) twin написал(а):
Кнопка "редактировать"

Спустя 18 минут, 21 секунда (15.04.2010 - 12:37) twin написал(а):
Так, а теперь по подробнее, что нужно получить на выходе

Спустя 7 минут, 7 секунд (15.04.2010 - 12:45) mad/crs написал(а):
На выходе получить массив в котором:
$array[название атрибута]=содержимое атрибута.
Всё дело в том что есть необходимость предусмотреть использование кавычек в нутри содержимово и соответственно надо учесть экранирование. "Откусывать" всё содержимое атрибута игнорируя \" или \'

Спустя 18 минут, 58 секунд (15.04.2010 - 13:04) twin написал(а):
Странно ты используешь функцию preg_replace
Она совсем не так работает. А с модификатором "e" вообще осторожнее надо бы.
Вот так, только насчет апострофов недопонял. Где они могут быть?
    $text = '<input type="text" name="login" value="some\"text\""/>';
preg_match_all('#"[^"\\\]*(\\\.[^"\\\]*)*"#uis', $text, $out);
print_r($out[0]);

Спустя 17 минут, 38 секунд (15.04.2010 - 13:21) mad/crs написал(а):
Спасибо за ответ и терпение smile.gif
По поводу странно я сагласен но так будет быстрее мне кажется тем более что данные которые обрабатываются таким образом не будут приходить со стороны пользователя, тоесть безопасны. это шаблоны форм которые хранятся на серваке.
после preg_match_all я неполучу асоциативный массив [атрибут]=значение а мне это жуть как надо smile.gif
И на сколько я понял вариант atribute='data' будет проигнорирован?! так же как и atribute='quotes"rulez"forever\'!'

Спустя 16 минут, 54 секунды (15.04.2010 - 13:38) mad/crs написал(а):
Если долго биться то можно и убиться. Но мне повезло! Нашёл где "собака":
проблема в экранирующем символе \. Надо было мне в регулярке три слеша ставить biggrin.gif
тоесть регулярка: @(\w+?)=((\"|\')(?:\\?.)*?\3)@se
а правильно так: @(\w+?)=((\"|\')(?:\\\?.)*?\3)@se
Проверял та я онлаин а там как раз таки надо 2 слэша а не 3 как правильно
И если бы не twin я бы и не увидел ошибку smile.gif

Спасибо за внимание можно закрыть тему! smile.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.