Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: и снова про "выдирание" ссылок
 
 автор: goddamn   (19.11.2005 в 03:36)   письмо автору
 
 

просмотрел все сообщения форума, но ничего не помогло ...
итак, есть код :

<?php
$x 
"<a href    =/asfasf/as?sf>  1</a><a href = 'sss'>2</a> <a href=\"&#1234;/sas/\" target=\"2\">3</a>    <a href=\"/news/?id=1\" style=\"padding-right: 8px;\">4</a>
<a href=\"/news/\" >5 </a><a name=4>эта ссылка не входит в список</a>"
;

preg_match_all('/<a(?:.+)href[\s]*=[\s]*(?:\s|\"|\')?([^\'\"\>]+)(?:\"|\')?[^>]*>([^<]*)<\/a>/iU',$x,$hrefs);

echo
"<pre>";
print_r($hrefs);
echo
"</pre>";
?>

$hrefs[1] - это url
$hrefs[2] - это то, что между <a></a>

но! в $hrefs[1] почему-то только по 1 символу от url ?! :(

HELP!

   
 
 автор: goddamn   (19.11.2005 в 05:18)   письмо автору
 
   для: goddamn   (19.11.2005 в 03:36)
 

ух, разобрался! :)
так работает

<?php
$x 
"<a href    =/asfasf/as?sf>  1</a><a href = 'sss'>2</a> <a href=\"&#1234;/sas/\" target=\"2\">3</a>    <a href=\"/news/?id=1\" style=\"padding-right: 8px;\">4</a>
<a href=\"/news/\" >5 </a><a name=4>эта ссылка не входит в список</a>"
;

preg_match_all('/<a[\'\"\=\-\_\w\s\d]+href[\s]*=[\s]*[\"|\']?([^\'\"\>]+)[\"|\']?[^>]*>([^<]+)<\/a>/i',$x,$hrefs);

echo
"<pre>";
print_r($hrefs);
echo
"</pre>";
?>


но опять же, конструкция <a href="aaa"><img></a> не работает. вместо <img> может быть любой тэг, как то:<p>,<i>,<u> и т.д. , т.е. срабатывает ([^<]+) .... что же делать ?
гуру ! где вы ???! :)

или предварительно заменять все <tag> например на [tag]... а потом уже искать ссылки ?

   
 
 автор: cheops   (19.11.2005 в 11:55)   письмо автору
 
   для: goddamn   (19.11.2005 в 05:18)
 

Давайте исходный текст, чтобы ситуацию воспроизвести можно было...

   
 
 автор: goddamn   (19.11.2005 в 12:43)   письмо автору
 
   для: cheops   (19.11.2005 в 11:55)
 

так вот же :)
вроде учел всевозможные разновидности (более-менее разумные) написания ....

<?php
$x 
"<a href    =/asfasf/as?sf class='wew'> <span>llalalal</span>  1</a><a href = 'sss'>2</a> <a style='none' href=\"&#1234;/sas/\" target=\"2\">3</a>    <a href=\"http://127.0.0.1/design/?id=2&subid=t\" style=\"padding-right: 8px;\"> 4 </a>
<a href=\"/news/\" >5 </a><a title=\"Смотреть описание\" href=\"./soft.php?id=2&show=5\"><img src=\"/path/to/pic/pic.gif\">6</a><a name=4>эта ссылка не входит в список</a>"
;
?>

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования