Конвертация ссылок тхt - html?

Тема в разделе "PHP", создана пользователем mikki009, 5 мар 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. mikki009

    mikki009 Создатель

    Регистр.:
    3 окт 2008
    Сообщения:
    34
    Симпатии:
    4
    Каким образом реализовать конвертацию ссылок из тхе в хтмл, при этом чтобы ссылки были активными напр.
    site.ru - www.site.ru
     
  2. Igor123

    Igor123 Постоялец

    Регистр.:
    14 июн 2008
    Сообщения:
    116
    Симпатии:
    13
    ну если как ты написал файл link.txt выглядит так
    Код:
    mail.ru
    vodka.ru
    pivo.ru
    fishki.net

    то скрипт будет такой
    Код:
    <?php
    $i=1;
    $handle = fopen("./link.txt", "r");
    	while (!feof($handle)) 
    {
    	$buffer = fgets($handle, 4096);
    	$buffer=trim($buffer);
    	echo "<a href=\"http://".$buffer."\/">".$buffer."</a><br>\n\n";
    }
    fclose($handle);
    
    ?>

    который выведит информацию в этом виде
    Код:
    <a href="http://mail.ru">mail.ru</a><br>
    
    <a href="http://vodka.ru">vodka.ru</a><br>
    
    <a href="http://pivo.ru">pivo.ru</a><br>
    
    <a href="http://fishki.net">fishki.net</a><br>
    
    
     
  3. mikki009

    mikki009 Создатель

    Регистр.:
    3 окт 2008
    Сообщения:
    34
    Симпатии:
    4
    хммм...не работает
     
  4. venetu

    venetu

    Регистр.:
    28 мар 2007
    Сообщения:
    737
    Симпатии:
    263
    Вот функция из WordPress, которая подсвечивает все линки в посте (т.е. в произвольном куске текста)

    PHP:
    function make_clickable($ret) {
        
    $ret ' ' $ret;
        
    // in testing, using arrays here was found to be faster
        
    $ret preg_replace(
            array(
                
    '#([\s>])([\w]+?://[\w\#$%&~/.\-;:=,?@\[\]+]*)#is',
                
    '#([\s>])((www|ftp)\.[\w\#$%&~/.\-;:=,?@\[\]+]*)#is',
                
    '#([\s>])([a-z0-9\-_.]+)@([^,< \n\r]+)#i'),
            array(
                
    '$1<a href="$2" rel="nofollow">$2</a>',
                
    '$1<a href="http://$2" rel="nofollow">$2</a>',
                
    '$1<a href="mailto:$2@$3">$2@$3</a>'),$ret);
        
    // this one is not in an array because we need it to run last, for cleanup of accidental links within links
        
    $ret preg_replace("#(<a( [^>]+?>|>))<a [^>]+?>([^>]+?)</a></a>#i""$1$3</a>"$ret);
        
    $ret trim($ret);
        return 
    $ret;
    }

     
  5. Igor123

    Igor123 Постоялец

    Регистр.:
    14 июн 2008
    Сообщения:
    116
    Симпатии:
    13
    какую ошибку выдает ?

    поправил скрипт, там ковычка была нетакая


    Код:
    <?php
    $i=1;
    $handle = fopen("./link.txt", "r");
    	while (!feof($handle)) 
    {
    	$buffer = fgets($handle, 4096);
    	$buffer=trim($buffer);
    	echo "<a href=\"http://".$buffer."/\">".$buffer."</a><br>\n\n";
    }
    fclose($handle);
    
    ?>

    у тебя как выглядит файл?
    каждый домен на новой строчке, так ?
     
    mikki009 нравится это.
  6. mikki009

    mikki009 Создатель

    Регистр.:
    3 окт 2008
    Сообщения:
    34
    Симпатии:
    4
    все ок, теперь заработало
     
  7. Key_Board

    Key_Board Писатель

    Регистр.:
    21 сен 2006
    Сообщения:
    9
    Симпатии:
    0
    а там линк по www. или(и) .com распознаётся?
     
  8. serjinio

    serjinio

    Регистр.:
    10 май 2007
    Сообщения:
    439
    Симпатии:
    49
    Key_Board Вам наверно все надо разжевать и в рот положить готовое..а самому тяжело проверить...
    PHP:
    <?php 
    function _make_clickable($ret) {
        
    $ret ' ' $ret;
        
    // in testing, using arrays here was found to be faster
        
    $ret preg_replace(
            array(
                
    '#([\s>])([\w]+?://[\w\#$%&~/.\-;:=,?@\[\]+]*)#is',
                
    '#([\s>])((www|ftp)\.[\w\#$%&~/.\-;:=,?@\[\]+]*)#is',
                
    '#([\s>])([a-z0-9\-_.]+)@([^,< \n\r]+)#i'),
            array(
                
    '$1<a href="$2" rel="nofollow">$2</a>',
                
    '$1<a href="http://$2" rel="nofollow">$2</a>',
                
    '$1<a href="mailto:$2@$3">$2@$3</a>'),$ret);
        
    // this one is not in an array because we need it to run last, for cleanup of accidental links within links
        
    $ret preg_replace("#(<a( [^>]+?>|>))<a [^>]+?>([^>]+?)</a></a>#i""$1$3</a>"$ret);
        
    $ret trim($ret);
        echo 
    $ret;
        return 
    $ret;
    }
    $text='
    video page here.
    Bhods, too.<br />
    http://www.rapidshare.com/files/69150572/Porrrrran.part06.rar<br />
    http://site.com/files/69150592/uuuan.part07.rar<br />
    http://rapidshare.com/files/69150581/Poshhh.rar<br />
    SSSSSSSSSSS'
    ;

     
    _make_clickable($text);
     
  9. kud

    kud Постоялец

    Регистр.:
    18 фев 2009
    Сообщения:
    89
    Симпатии:
    11
    предлагаю упростить вариант предложенный Igor123 до такого

    PHP:
    <?php 
    $file 
    file("./file.txt");
    foreach (
    $file as $key => $value) {
       echo 
    "<a href='http://".trim($value)."'>".trim($value)."</a><br>";
    }
    ?>
     
  10. serjinio

    serjinio

    Регистр.:
    10 май 2007
    Сообщения:
    439
    Симпатии:
    49
    PHP:
     function light_urls($text)
        {    
            return 
    preg_replace("/(http:\\/\\/|www.)(\\S+)/si",
                                
    "<a href=\"http://\\2\">\\2</a>",
                                
    $text);
        }

    $t='www.site.ru';
    echo 
    light_urls($t);
     
Статус темы:
Закрыта.