Есть примерно 70 страниц html, в каждой по 25 пронумерованных ссылок. Нужно все их выдернуть в txt. вид ссылок: 5. (пробелы, font'ы.. от 4 до 40 символов) <a href="нужная ссылка"> (много мусора =) 6. (пробелы, font'ы.. от 4 до 40 символов) <a href="нужная ссылка2"> Пробовал так preg_match('{5.+?href=([a-z0-9.://-]+)}is', $str, $pocket) or Die("error"); или preg_match('{6.[^href]+?href=([a-z0-9.://-]+)}is', $str, $pocket) or Die("error"); в любом случае он периодически соскакивает не на ближайший href, а через 1-2-3...
обычно делаю просто так, чтоб не морочится с извратными регулярками =) PHP: <? preg_match_all('/<a(.*)>(.*)<\/a>/isU',$data,$links); $data = implode('',$links[1]); preg_match_all('/href=(.*)(\s|>|#|\/>){1}/isU',$data,$all_links); ?> Но с регуляркоми у меня плохо, наверняка кто нибудть посоветует решение лучше...
PHP: <?php $txt = <<<TXT 1.<span>dsfsdfsdf</span><a href='http://link1'>link</a> <a href='/asdasd'>adasdas</a> 2.<b>wrwerwer</b><a href="http://link2">link</a> <a class="sdfsd" href="/asdsd">sdfsfs</a> 3.<i>sfsdfsdf</i><a href=http://link3 class="url">link</a> TXT; preg_match_all('~[0-9]+\..+?href=("|\'|)([^\s>]+)\\1~is', $txt, $out); print_r($out[2]); ?>
Задача похожая поэтому топик создавать не буду. Вообщем в тексте к примеру текст в переменной $hometext приходят ссылки на сторонние сайты. Задача: подловить все линки и дописать в начале вместо просто href="site.com" - href="go.php?link=site.com". P.S. В переменной обычные новости, в них могут присутствовать и ссылки нуна сделать что бы они были не на прямую ):
PHP: <?php preg_replace('%(<a[^>]+href\s*=\s*)(?:("[^"]*")|('[^']*'))%i', '$1"go.pgp?link=$2"', $hometext); ?> ЗЫ: Смайлы внутри php-кода — это круто…
Ага, одинарные кавычки забыл заслешить: PHP: <?php preg_replace('%(<a[^>]+href\s*=\s*)(?Sad"[^"]*")|(\'[^\']*\'))%i', '$1"go.pgp?link=$2"', $hometext); ?>
Код (Text): $hometext = '<a href="http://site.com">site</a> xexe'; $hometext = preg_replace('%(<a[^>]+href\s*=\s*)(?:("[^"]*")|(\'[^\']*\'))%i', '$1"go.php?link=$2"', $hometext); Ссылка получается: go.php?link= но не как нужно было: go.php?link=http://site.com Заранее огромное спасибо!
Код (Text): $hometext = '<a href="/main">Главная</a> <a href=\'/contacts\'>Контакты</a>'; echo preg_replace('%(<a[^>]+href\s*=\s*)(?:(?:"([^"]*)")|(?:\'([^\']*)\'))%i', '$1"go.php?link=$2$3"', $hometext);
Код (Text): [^>] Меня всегда смущало это выражение. А если Код (Text): <a onclick="javascript: (2 > 5)" href="link.html"> ?