В общем, имеется код регулярного выражения для парсинга атрибутов HTML тегов. Так вот, по какой-то причине не срабатывает отключение жадного поиска, я по разному пробовал ... Странная бесовщина творится, уже все волосы повыдергивал.
preg_match('~
<
([a-z0-9]+) #Получаем название тега
\s*
(?:[a-z_-]+="(.*?)")* #ВОТ здесь проблемное место! Этот кусок кода парсит все атрибуты
>
~xs', '<div id="test_id" class="test_clas">', $parts);
print_r($parts);
Нужно чтобы в массиве $parts
находился список атрибутов, что-то вроде этого:
array(
'id' => 'test_id'
'class' => 'test_class'
)
То-есть, чтобы можно было получить отдельно название атрибута и его содержимое, а сейчас все атрибуты одной строчкой !!!
UPD:
Немного подправил код, изменил вот эту строчку: (?:([a-z_-]+)="(.*?)"\s*)*
а именно, добавил вот этот кусочек \s*
Код работает как нужно, вот только находит самый последний атрибут, затирая первый. Как-то можно исправить сей недуг?
Вы с помощью preg_match()
хотите найти неопределенное количество совпадений?
Вам нужно сначала найти тег, а уже потом искать в найденом неопределенное количество атрибутов с помощью preg_match_all()
А вообще, согласен с Sublihim. Для вашей задачи лучше подойдет html-пассер
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Пытаюсь сделать админку SleepingOwl (http://sleeping-owlgithub
Здравствуйте! Нужна ваша помощь в решении одной задачкиЕсть три переменные:
Доброго времени суток! Мне необходимо загрузить аудиофайл (wav) в документы ВКонтакте
Обновил сервер и теперь код обернутый в <? ?> перестал выполнятьсяКак подправить?