|
|
|
| Прошу помочь, кто знает как. Обыскал весь форум - нужного ответа не нашёл.
$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); ,
но подставляя место того, что есть - вообще ничего не выводит.
Как сделать правильно? Спасибо за помощь. | |
|
|
|
|
|
|
|
для: Владимир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)
| | Недавно тоже решал такую задачку, если нужны чистые адреса из ссылок, то нужно немного дополнить:
<?
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='#'> | |
|
|
|
|
|
|
|
для: Николай2357
(22.08.2008 в 20:01)
| | Здесь автор может быть не особо правильно поставил задачу.
>чистые адреса
Чтобы это имелось ввиду?
P.S. Как я понял, это из тегов <a> выводить URL, а именно, что находится в href и без следующих тегов img в ссылке.
>Николай2357
а) не будут попадать адреса из текста типа href="туда-сюда". Маловероятно, но все же.
б) отрежутся "хвосты" типа spider.php?id=774464в) не пройдут "местные" ссылки типа <a href='#'>
a)типа href="туда-сюда".
Что значит туда-сюда?
б) Все там пройдет
PPS
Задача в другом. | |
|
|
|
|
|
|
|
для: 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>, ведь он вполне работоспособный. А картинки вроде бы не надо...
На счет "чистого адреса", я так понимаю, что он должен быть чистым, без хвостов...
А эта штука # не пролезет, я специально проверил.
Я нисколько не умаляю Ваши познания, куда мне. Просто почему бы не поделиться тем, что сам недавно со скрипом вымучал? | |
|
|
|