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

spiderbuber

Гуру форума
Заблокирован
Регистрация
20 Июл 2009
Сообщения
237
Реакции
59
  • Автор темы
  • Заблокирован
  • #1
Имеется такой код, который подтягивает ссылки с удалённого хоста и выводит их на сайте.
Где тут можно вставить стиль ссылок?..
Например: сейчас выводится так
<a href="Для просмотра ссылки Войди или Зарегистрируйся">google</a>

А хотелось бы, чтоб выводилось так:
<div style="display:none"><a href="Для просмотра ссылки Войди или Зарегистрируйся">google</a></div>

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( $sock, 4096 ) )
    {
        $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($ch, CURLOPT_HEADER, FALSE);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
    $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);
?>
Сейчас выкручиваюсь тем, что сразу прописываю в гейте ссылки вида:

<div style="display:none"><a href="Для просмотра ссылки Войди или Зарегистрируйся">google</a></div>
отчего файл получается слишком громоздким...
Помогите поправить выше приведенный код..

ЗЫ: В идеале было бы конечно так: в гейте прописываем только УРЛ|АНКОР ( Для просмотра ссылки Войди или Зарегистрируйся ), а этим скриптом выводим так как нам нужно.
 
если сейчас выводится так
<a href="Для просмотра ссылки Войди или Зарегистрируйся">google</a>
а надо так
<div style="display:none"><a href="Для просмотра ссылки Войди или Зарегистрируйся">google</a></div>
просто замени links($url);
на
PHP:
if(links($url)!='') echo ' <div style="display:none"> ';
links($url);
if(links($url)!='') echo ' </div> ';
 
тогда так замени echo в функции links на return и links($url) на
PHP:
echo preg_replace('/<a (.*?)<\/a>/','<div style="display:none"><a $1</a></div>',links($url));
 
  • Автор темы
  • Заблокирован
  • #4
То, что нужно копать именно в эту сторону я догадался, но сколько не бился - не выходит.
Этот вариант тоже не проканл! Так сразу выводятся 3 ссылки без изменений, т.е.
<a href="Для просмотра ссылки Войди или Зарегистрируйся">google1</a><a href="Для просмотра ссылки Войди или Зарегистрируйся">google2</a><a href="Для просмотра ссылки Войди или Зарегистрируйся">google3</a>
 
Вот так попробуй, должно работать:
Заменить
PHP:
function links($url)
{
на
PHP:
function links($url)
{ echo '<div style="display:none">';
 
  • Автор темы
  • Заблокирован
  • #6
Спасибо, выручил! А с этим вариантом не подскажешь?
в гейте прописываем только УРЛ|АНКОР ( Для просмотра ссылки Войди или Зарегистрируйся ), а этим скриптом выводим так как нам нужно.
Понятно, что начало и концовку можно сделать так:
PHP:
function links($url)
{ echo '<div style="display:none"><a href="';
....
    echo '</a></div>';
}
А вот как быть с серединкой ?
 
А обязательно к каждой ссылке лепить свой 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>

Собственно заявленная красивость ссылок решается.
 
не понял как использовать.. можно подробнее?..
как-то так
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));
?>
 
Назад
Сверху