preg_match a <link>href - PullRequest
       4

preg_match a <link>href

0 голосов
/ 20 февраля 2012

Я пытаюсь сделать что-то, что мне показалось бы простым, но не повезло. Цель состоит в том, чтобы получить значение href из любого тега. Пример:

Исходный материал:

<link href="http://www.somesite.com/test.css" rel="stylesheet" type="text/css">

RegEx пытается:

<link[^>]*href=["{1}](.*?)["{1}][^>]*>

Кажется, он действителен при http://regexpal.com/,, но я пробую его при http://www.solmetra.com/scripts/regex/index.php,, но он не работает.

Есть идеи?

1 Ответ

2 голосов
/ 20 февраля 2012

Похоже, у вас есть {1} внутри класса символов [], когда оно действительно должно следовать после. На самом деле, это даже не нужно, поскольку это неявно. Но вместо этого вы должны использовать [^"], чтобы сопоставить все до следующей цитаты:

<link[^>]*href="([^"]*)"[^>]*>

Примечание : вы пытаетесь сопоставить только атрибуты href, заключенные в двойные кавычки. Это потребует модификации, если вы ожидаете встретить какие-либо атрибуты в одинарных кавычках.

Обязательное публичное объявление: лучше использовать правильную библиотеку для разбора HTML для разбора HTML и получения атрибутов, чем пытаться анализировать ее с помощью регулярных выражений.

...