Нужно проанализировать страницу на количество ссылок (SEO скрипт). Каким образом это сделать лучше и быстрее?
Это я понял, но проблема след - а что если ссылка разбита на несколько строк? Хотя думаю можно файл в строку сделать и тогда парсить, но как это скажется на скорости?
В общем примерно написал следующее Код (Text): preg_match_all('|<a(.*)href="(.*)>(.*)</a>|Uis', $text, $out); Но проблема такая возникла - если ссылка имеет вид <a href="host">text</a>, то все нормально, но если <a href="host" class="class">text</a>, то вместо имя хоста он берет host" class="class. Возможно это как то решить?
Мой более правильный. В варианте svk в $out заносятся лишние значения - все что находится между <a и href, кавычкой и >. Чтобы посмотреть, что находится выведи print_r($out);
а как насчет варианта, когда кавычки в тэге одинарные или когда их вообще нет? PHP: <?php $str = '<a href=http://link1 class="test">link1</a> <a style="" href=\'http://link2\'>link2</a> <a href="http://link3">link3</a> <a href=http://link4>link4</a>'; preg_match_all('~<a.*?href=(\'|"|)([^\s]+)\\1[^>]*?>(.*?)</a>~is', $str, $out); print_r($out); ?>
дайте напильник - и мы сделаем вертолет... (ц) какой-то топик здесь.... =) щяс домой доберусь..... и выдам кусок кода..... =)
Если еще надо... Просто сам недавно парился со сбором ссылок и вот что получилось. Это проверяет все <a href=... , а также <img src=... , т.е. и рисунки тоже. preg_match_all('/<(?:[aA][\s]+[hH][rR][eE][fF]|[iI][mM][gG][\s]+.*[\s]+[sS][rR][cC])[\s]*=[\s]*[\'"]([^\s">]+)[\'"]/',$info,$res); И не говори, что получилось длиновато. Это работает быстро, тем более что у меня вопрос о скорости не стоял
cia, чтобы не получался такой ужас, рекомендую почитать про модификатор i. И другие модификаторы будут тоже полезны. http://php.ru/manual/reference.pcre.pat ... fiers.html
Кстати, есть неточность. Эта регулярка не выловит ссылку, например, такого вида <a class="link" href="index.php">
кстати, да - а помоему, зачем вообще плясать от тега? точнее, надо плясать от "<a" до "href=" и все....а между ними пусть .+ будет...
Да знаю. Просто искал готовую регулярку, которая возвращала бы также и ссылки с картинок... не нашел, поэтому написал сам, попутно изучив азы регулярных выражений. Того что есть мне вполне достаточно. Большое количество модификаторов лишь сокращают запись, однако производительность не повышают (хочется подтвердить свои слова словами других, но, увы, не нашел того, где я это вычитал). Да, действительно, баг. Уже месяц эта регулярка работает, однако подобной конструкции не выявлено... странно.