Как "украсить" ссылки на php?

Тема в разделе "Как сделать...", создана пользователем spiderbuber, 22 дек 2011.

  1. spiderbuber

    spiderbuber

    Заблокирован
    Регистр.:
    20 июл 2009
    Сообщения:
    237
    Симпатии:
    61
    Имеется такой код, который подтягивает ссылки с удалённого хоста и выводит их на сайте.
    Где тут можно вставить стиль ссылок?..
    Например: сейчас выводится так
    А хотелось бы, чтоб выводилось так:
    PHP:
    <?php
    $count_s 
    3//Сколько вывести ссылок
    $host "http://site.ru/gate.php";//хост
     
    $url $host."?count=1&static=0&id=1&count_s=".$count_s;
     
    function 
    geturl_1($url)
    {
        return 
    file_get_contents($url);   
    }
    function 
    geturl_2$sock,$host$path$query )
    {
        
    fputs($sock"GET " $path "?" $query "  HTTP/1.0\r\n" .
                            
    "Host: $host\r\n" .
                            
    "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.3) Gecko/20060426 Firefox/1.5.0.3\r\n" .
                            
    "Accept: */*\r\n" .
                            
    "Accept-Language: en-us,en;q=0.5\r\n" .
                            
    "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7\r\n" .
                            
    "Keep-Alive: 300\r\n" .
                            
    "Connection: keep-alive\r\n" .
                            
    "Referer: http://$host\r\n\r\n");
        while ( 
    $line fread$sock4096 ) )
        {
            
    $response .= $line;
        }
        
    fclose$sock );
        
    $pos      strpos($response"\r\n\r\n");
        
    $response substr($response$pos 4);
        return 
    $response;
    }
    function 
    geturl_3($url)
    {
        
    $ch curl_init($url);
        
    curl_setopt($chCURLOPT_HEADERFALSE);
        
    curl_setopt($chCURLOPT_RETURNTRANSFERTRUE);
        
    $result curl_exec($ch);
        
    curl_close($ch);
        return 
    $result;
    }
     
    function 
    links($url)
    {
        if( 
    ini_get("allow_url_fopen") == 1)
        {
            echo 
    geturl_1($url);
        }
        else
        {
            
    $url_1 parse_url($url);
            if(
    $sock = @fsockopen($url_1['host'], 80))
            {
                echo 
    geturl_2$sock$url_1['host'], $url_1['path'], $url_1['query'] );
            }
            elseif( @
    function_exists('curl_init') )
            {
                echo 
    geturl_3($url);
            }
        }
    }
    links($url);
    ?>
    Сейчас выкручиваюсь тем, что сразу прописываю в гейте ссылки вида:

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

    ЗЫ: В идеале было бы конечно так: в гейте прописываем только УРЛ|АНКОР ( Перейти по ссылке ), а этим скриптом выводим так как нам нужно.
     
  2. zzallexx

    zzallexx

    Регистр.:
    11 июн 2008
    Сообщения:
    1.035
    Симпатии:
    703
    если сейчас выводится так
    а надо так
    просто замени links($url);
    на
    PHP:
    if(links($url)!='') echo ' <div style="display:none"> ';
    links($url);
    if(
    links($url)!='') echo ' </div> '
     
  3. zzallexx

    zzallexx

    Регистр.:
    11 июн 2008
    Сообщения:
    1.035
    Симпатии:
    703
    тогда так замени echo в функции links на return и links($url) на
    PHP:
    echo preg_replace('/<a (.*?)<\/a>/','<div style="display:none"><a $1</a></div>',links($url));
     
  4. spiderbuber

    spiderbuber

    Заблокирован
    Регистр.:
    20 июл 2009
    Сообщения:
    237
    Симпатии:
    61
    То, что нужно копать именно в эту сторону я догадался, но сколько не бился - не выходит.
    Этот вариант тоже не проканл! Так сразу выводятся 3 ссылки без изменений, т.е.
     
  5. lost

    lost Постоялец

    Регистр.:
    15 фев 2007
    Сообщения:
    58
    Симпатии:
    31
    Вот так попробуй, должно работать:
    Заменить
    PHP:
    function links($url)
    {
    на
    PHP:
    function links($url)
    { echo 
    '<div style="display:none">';
     
    spiderbuber нравится это.
  6. spiderbuber

    spiderbuber

    Заблокирован
    Регистр.:
    20 июл 2009
    Сообщения:
    237
    Симпатии:
    61
    Спасибо, выручил! А с этим вариантом не подскажешь?
    Понятно, что начало и концовку можно сделать так:
    PHP:
    function links($url)
    { echo 
    '<div style="display:none"><a href="';
    ....
        echo 
    '</a></div>';
    }
    А вот как быть с серединкой ?
     
  7. zzallexx

    zzallexx

    Регистр.:
    11 июн 2008
    Сообщения:
    1.035
    Симпатии:
    703
    этот вариант пробовал?
     
  8. spiderbuber

    spiderbuber

    Заблокирован
    Регистр.:
    20 июл 2009
    Сообщения:
    237
    Симпатии:
    61
    не понял как использовать.. можно подробнее?..
     
  9. porsche2

    porsche2

    Регистр.:
    18 ноя 2007
    Сообщения:
    667
    Симпатии:
    210
    А обязательно к каждой ссылке лепить свой div, да еще с одинаковым стилем? Так получится лишний php и html код. Блок ссылок выводится в div, вот к этому div и нужно прилепить стиль.
    HTML:
     
    <style type="text/css">
    a.link{color:#cccccc;text-decoration: none;}
    </style> 
     
    <div class="link">
    <a href="http://google.ru">google</a>
    ...
    <a href="http://google.com">google</a>
    </div>
    Собственно заявленная красивость ссылок решается.
     
  10. zzallexx

    zzallexx

    Регистр.:
    11 июн 2008
    Сообщения:
    1.035
    Симпатии:
    703
    как-то так
    PHP:
    function links($url)
    {
        if( 
    ini_get("allow_url_fopen") == 1)
        {
            return 
    geturl_1($url);
        }
        else
        {
            
    $url_1 parse_url($url);
            if(
    $sock = @fsockopen($url_1['host'], 80))
            {
                return 
    geturl_2$sock$url_1['host'], $url_1['path'], $url_1['query'] );
            }
            elseif( @
    function_exists('curl_init') )
            {
                return 
    geturl_3($url);
            }
        }
    }
    echo 
    preg_replace('/<a (.*?)<\/a>/','<div style="display:none"><a $1</a></div>',links($url));
    ?>