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

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

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Как вырезать со страницы чистые адреса ссылок

Сообщения:  [1-5] 

 
 автор: Николай2357   (23.08.2008 в 02:46)   письмо автору
 
   для: AcidTrash   (22.08.2008 в 23:39)
 

Да это так, мысли вслух. Просто я недавно возился с этой проблемой, так и не смог решить в одном выражении.
Вот Ваш вариант тоже не без изъяна. Ссылка <a href="tuda-suda.go"> останется без внимания, потому что пробела в конце нет. А так многие пишут.
На счет текста, это гипотетическое заключение, так, для порядку. Один раз в год и вилы стреляют. Вдруг кто нибудь случайно такой код напишет:<map name="Map"><area shape="rect" coords="20,20,20,20" href="tuda-suda.go" > </a></map>, ведь он вполне работоспособный. А картинки вроде бы не надо...
На счет "чистого адреса", я так понимаю, что он должен быть чистым, без хвостов...
А эта штука # не пролезет, я специально проверил.
Я нисколько не умаляю Ваши познания, куда мне. Просто почему бы не поделиться тем, что сам недавно со скрипом вымучал?

  Ответить  
 
 автор: AcidTrash   (22.08.2008 в 23:39)   письмо автору
 
   для: Николай2357   (22.08.2008 в 20:01)
 

Здесь автор может быть не особо правильно поставил задачу.
>чистые адреса
Чтобы это имелось ввиду?

P.S. Как я понял, это из тегов <a> выводить URL, а именно, что находится в href и без следующих тегов img в ссылке.


>Николай2357
а) не будут попадать адреса из текста типа href="туда-сюда". Маловероятно, но все же.
б) отрежутся "хвосты" типа spider.php?id=774464в) не пройдут "местные" ссылки типа <a href='#'>

a)типа href="туда-сюда".
Что значит туда-сюда?
б) Все там пройдет

PPS
Задача в другом.

  Ответить  
 
 автор: Николай2357   (22.08.2008 в 20:01)   письмо автору
 
   для: Владимир22   (22.08.2008 в 10:26)
 

Недавно тоже решал такую задачку, если нужны чистые адреса из ссылок, то нужно немного дополнить:
<?
preg_match_all
("#<a\s+href=['|\"]?([^\#]+?)['|\"]?\s.*>(?!<img).+?</a>#i",$furl,$out);
for(
$i=0;$i<count($out[1]);$i++){ 
$link=preg_replace("#(.+?)\?.*#i","$1",$out[1][$i]);
print 
$link."<br>"


тогда
а) не будут попадать адреса из текста типа href="туда-сюда". Маловероятно, но все же.
б) отрежутся "хвосты" типа spider.php?id=774464
в) не пройдут "местные" ссылки типа <a href='#'>

  Ответить  
 
 автор: AcidTrash   (22.08.2008 в 12:30)   письмо автору
 
   для: Владимир22   (22.08.2008 в 10:26)
 

<?php
$url 
"http://site.ru"// здесь надо вырезать ссылки (только адреса в href="ТОЛЬКО ЗДЕСЬ")
$furl file_get_contents($url);
$furl preg_replace("'<script[^>]*?>.*?</script>'si"""$furl); // убираем скрипты
preg_match_all("#href=['|\"]?(.+?)['|\"]?\s.*>(?!<img).+?</a>#i",$furl,$out);
 
// вырезает, но целые ссылки, а надо голые адреса, то, что находится в href="!!!!!!!!!!".
for($i=0;$i<count($out[1]);$i++){
print 
$out[1][$i]."<br>";
}
?>

  Ответить  
 
 автор: Владимир22   (22.08.2008 в 10:26)   письмо автору
 
 

Прошу помочь, кто знает как. Обыскал весь форум - нужного ответа не нашёл.
$url = "http://site.ru"; // здесь надо вырезать ссылки (только адреса в href="ТОЛЬКО ЗДЕСЬ")
$furl = file_get_contents($url); 
$furl = preg_replace("'<script[^>]*?>.*?</script>'si", "", $furl); // убираем скрипты
preg_match_all("#<a[^>]+>(?!<img).+?</a>#i",$furl,$out);
 // вырезает, но целые ссылки, а надо голые адреса, то, что находится в href="!!!!!!!!!!".
for($i=0;$i<count($out[0]);$i++){
print $out[0][$i]."<br>";
Так выводит все ссылки целиком, а надо вывести только чистые адреса.
Нашёл такой скрипт (вынимает всё из href)
preg_match_all("~\<a.*href=\"([h\/][^#].*?)\"~i",$furl,,$ou); ,
но подставляя место того, что есть - вообще ничего не выводит.
Как сделать правильно? Спасибо за помощь.

  Ответить  

Сообщения:  [1-5] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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