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

Форум PHP

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

 

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

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

тема: Обработка ссылок
 
 автор: Алексей Рябченко   (16.02.2008 в 17:55)   письмо автору
 
 

http://softtime.ru/forum/addtheme.php?id_forum=1
http://softtime.ru/forum/addtheme.php?id_forum=1
http://softtime.ru/forum/addtheme.php?id_forum=1
http://denwer.ru/
http://denwer.ru/
http://denwer.ru/

посоветуйте как сделать что бы после обработки было так

softtime.ru
http://softtime.ru/forum/addtheme.php?id_forum=1
http://softtime.ru/forum/addtheme.php?id_forum=1
http://softtime.ru/forum/addtheme.php?id_forum=1

denwer.ru
http://denwer.ru/
http://denwer.ru/
http://denwer.ru/

   
 
 автор: bronenos   (16.02.2008 в 18:15)   письмо автору
 
   для: Алексей Рябченко   (16.02.2008 в 17:55)
 

А если будут перемешаны - повторять или группировать?

   
 
 автор: Алексей Рябченко   (16.02.2008 в 18:40)   письмо автору
 
   для: bronenos   (16.02.2008 в 18:15)
 

Групировать, ума не приложу как можно зделать,

   
 
 автор: Алексей Рябченко   (16.02.2008 в 21:05)   письмо автору
 
   для: Алексей Рябченко   (16.02.2008 в 18:40)
 

Что не у кого нет никаких предложений

   
 
 автор: Киналь   (16.02.2008 в 22:11)   письмо автору
 
   для: Алексей Рябченко   (16.02.2008 в 17:55)
 

Самый "дубовый" вариант - записать в БД и работать ее средствами.

   
 
 автор: Алексей Рябченко   (16.02.2008 в 22:26)   письмо автору
 
   для: Киналь   (16.02.2008 в 22:11)
 

Наверно вы меня не поняли, ссылок может быть много по две и т.д.
ВВел я в форму таким образом

http://softtime.ru/forum/index.php?id_forum=1
http://softtime.ru/forum/index.php?id_forum=2
http://softtime.ru/forum/index.php?id_forum=3
http://torrents.net.ua/=2
http://torrents.net.ua/=10
http://torrents.net.ua/=112
http://torrents.net.ua/=45
http://huh.net.ua/index

и должно получится так

softtime.ru
http://softtime.ru/forum/index.php?id_forum=1
http://softtime.ru/forum/index.php?id_forum=2
http://softtime.ru/forum/index.php?id_forum=3
torrents.net.ua
http://torrents.net.ua/=2
http://torrents.net.ua/=10
http://torrents.net.ua/=112
http://torrents.net.ua/=45
huh.net.ua
http://huh.net.ua/index

   
 
 автор: Алексей Рябченко   (16.02.2008 в 23:18)   письмо автору
 
   для: Алексей Рябченко   (16.02.2008 в 22:26)
 

Ладно давайте по другому.
у нас есть строка

<?php
$linki 
"http://softtime.ru/forum/index.php?id_forum=1 \n http://softtime.ru/forum/index.php?id_forum=2 \n http://buum.ru/forum/index.php?id_forum=3";
$arr_url explode("\n"$linki );
// получилось так
$arr_url[0] ="http://softtime.ru/forum/index.php?id_forum=1";
$arr_url[1] ="http://softtime.ru/forum/index.php?id_forum=2";
$arr_url[2] ="http://buum.ru/forum/index.php?id_forum=3";
// надо вывести вот так:
//  softtime.ru 
// http://softtime.ru/forum/index.php?id_forum=1
// http://softtime.ru/forum/index.php?id_forum=2
// buum.ru
// http://buum.ru/forum/index.php?id_forum=3
?>

   
 
 автор: Trianon   (16.02.2008 в 23:48)   письмо автору
 
   для: Алексей Рябченко   (16.02.2008 в 23:18)
 

Вероятно, сперва нужно решить частную задачу.
Как по строке http://softtime.ru/forum/index.php?id_forum=1
получить строку softtime.ru

Для этого, кстати, есть стандартная функция. Если лень писать самому. http://ru2.php.net/parse_url

   
 
 автор: Trianon   (16.02.2008 в 23:49)   письмо автору
 
   для: Киналь   (16.02.2008 в 22:11)
 

БД здесь не при чем совершенно.

   
 
 автор: Алексей Рябченко   (17.02.2008 в 00:25)   письмо автору
 
   для: Trianon   (16.02.2008 в 23:49)
 

Та я то знаю что с этой
<?php parse_url(); ?>
мне работать,
Тока как и куда и перед чем и после чего мне ее ставить

   
 
 автор: morkovkin   (17.02.2008 в 00:37)   письмо автору
 
   для: Алексей Рябченко   (17.02.2008 в 00:25)
 

Логика такая:
1) Из всей массы линков, выделить адреса сайтов.
2) Убрать дубликаты адресов, оставить по одному адресу для каждого сайта.
3) Далее, выбирая по-отдельности каждый адрес, выискивать ссылки, начинающиеся с такого же адреса.

Здесь нужно подумать.. от балды что-то не получается реализовать.

   
 
 автор: Trianon   (17.02.2008 в 01:53)   письмо автору
 
   для: Алексей Рябченко   (17.02.2008 в 00:25)
 

<?php

$links 
"http://softtime.ru/";
preg_match_all('#([\'"])(http://[^\\\'"]+)(\\1)#'file_get_contents($links), $out);
$links array_unique($out[2]);
sort($links);
$last  '';
foreach(
$links as $link)
{
    
$prefs parse_url($link);
    if(
$last != $prefs['host'])
        echo 
"<br/><b>".($last=$prefs['host'])."</b><br/>";
    echo 
"$link<br/>";
}
?>




counter.nn.ru
http://counter.nn.ru/?13891
http://counter.nn.ru/cgi-bin/counter.cgi?13891

top100-images.rambler.ru
http://top100-images.rambler.ru/top100/banner-88x31-rambler-gray2.gif

top100.rambler.ru
http://top100.rambler.ru/top100/

www.softtime.biz
http://www.softtime.biz/cd/index.php
http://www.softtime.biz/company/about.php
http://www.softtime.biz/company/contacts.php
http://www.softtime.biz/company/service.php
http://www.softtime.biz/dizign/about.php
http://www.softtime.biz/dizign/about3d.php
http://www.softtime.biz/dizign/portfolio.php
http://www.softtime.biz/reclame/index.php
http://www.softtime.biz/soft/about.php

www.st-hosting.ru
http://www.st-hosting.ru

www.yandex.ru
http://www.yandex.ru/cy?base=0&host=www.softtime.ru
http://www.yandex.ru/cycounter?www.softtime.ru 



PS. Сильно сомневаюсь, что это пойдет Вам на пользу... :(

   
 
 автор: Алексей Рябченко   (17.02.2008 в 03:17)   письмо автору
 
   для: Trianon   (17.02.2008 в 01:53)
 

помогли вы очень сильно, вот смотрите почему
я ввожу в форму кучу ссылок для скачивания файла с разных серверов. и результат.

Вот как еще получилось реализовать
привожу полный код

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Untitled Document</title>
</head>

<body>
<form action="index.php" method="post">

<textarea name="link" cols="70" rows="10"></textarea>
<input name="go" type="submit" value="Отправить">
</form>
<?php
    
if (isset($_POST['link'])) {$link $_POST['link'];}
    
$url "$link";
    
$arr_url explode("\n"$url);


      if(isset(
$_POST['go'])){

        if(
count($arr_url) == 1){

        
$url_edit parse_url($url);
        echo 
"[url=".$url."]".$url_edit[host]."[/url]";

        }elseif(
count($arr_url) > 1){

              
$url_n parse_url($url);
              
$arr parse_url($arr_url[0]);
              
$arr2 parse_url($arr_url[1]);
             if(
$arr[host] == $arr2[host]){

                   for (
$i 0$i count($arr_url); $i++) {

                      
$url_edit parse_url($arr_url[$i]);

                     if(
$lastfield != $url_edit[host])
                         echo 
"<br>".($lastfield $url_edit[host]). "<br>";
                             echo 
"| [url=".$arr_url[$i]."]part".++$a."[/url] ";


                    } echo 
"|";

             }else{


                 for (
$i 0$i count($arr_url); $i++) {

                      
$url_edit parse_url($arr_url[$i]);

                      if(
$lastfield != $url_edit[host])
                         
//echo "<br>".($lastfield = $url_edit[host]). "<br>";
                             
echo "| [url=".$arr_url[$i]."]".$url_edit[host]."[/url] ";

                 } echo 
"|";
             }
        }
      }

/




    
//if($lastfield != $row['name'])
      //   echo "<br>".($lastfield = $row['name']). "<br>";
//    echo $row['linka']."<br>";


//=================================================

 
}



?>
</body>
</html>


попробуйте все ок

   
 
 автор: Trianon   (17.02.2008 в 11:58)   письмо автору
 
   для: Алексей Рябченко   (17.02.2008 в 03:17)
 

<?php

$links 
"http://softtime.ru/";
preg_match_all('#([\'"])(http://[^\\\'"]+)(\\1)#'file_get_contents($links), $out);
$links $out[2];
$links array_unique($links);
sort($links);
$last  '';
foreach(
$links as $link)
{
   
$prefs parse_url($link);
   
$hosts[$prefs['host']][] = $link;
}
foreach(
$hosts as $host => $links)
{
   if(
count($links) == 1)
       echo 
"<br/><b><a href=\"$links[0]\">$host</a></b>";
   else for(
$num 1, print("<br/><b>$host</b>")
            ; 
$num <= count($links); $num++)
       echo 
" <a href=\"${links[$num-1]}\">$num</a>";
}
?>

   
 
 автор: Алексей Рябченко   (17.02.2008 в 18:39)   письмо автору
 
   для: Trianon   (17.02.2008 в 11:58)
 

Сегодня целый день сидел питался понять. неа непонял.
что делает вот эта строка

<?php
preg_match_all
('#([\'"])(http://[^\\\'"]+)(\\1)#'file_get_contents($links), $out);

//а еще точенее что происходит в 
preg_match_all('#([\'"])(http://[^\\\'"]+)(\\1)#',
// а затем 
file_get_contents($links), $out);
?>

   
 
 автор: kasmanaft   (17.02.2008 в 20:47)   письмо автору
 
   для: Алексей Рябченко   (17.02.2008 в 18:39)
 

В тексте скаченной страницы file_get_contents($links) с помощью регулярного выражения #([\'"])(http://[^\\\'"]+)(\\1)# ищутся все ссылки и заносятся в массив $out.

Рег. выражение на словах примерно: "http://", после которой обязательно несколько "букв", отличных от кавычек и апострофов, и всё это в тексте должно находиться внутри кавычек (или апострофов).

   
Rambler's Top100
вверх

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