Forum. MyNuke.ru

Forum. MyNuke.ru (http://forum.mynuke.ru/index.php)
-   Модули (http://forum.mynuke.ru/forumdisplay.php?f=17)
-   -   Вопрос про хак - Comments from slaed to nuke (http://forum.mynuke.ru/showthread.php?t=1390)

BFG 17.03.2011 13:52

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

Soniks 18.03.2011 12:13

BFG Вот функции для обработки текста с распознанием ссылок в нем и вставки кода (взято с php.net):
PHP код:
 // Cuts off long URLs at $url_length, and appends "..."
    
function reduceurl($url$url_length) {
        
$reduced_url substr($url0$url_length);
        if (
strlen($url) > $url_length$reduced_url .= '...';
        
        return 
$reduced_url;
    }

    
// Makes URLs with brackets into links
    // The regex searches for "http://" or equivalent, then various character possibilities (I don't know if it might be possible to exploit this if more characters were allowed). The "e" after the regex allows the reduceurl() to be evaluated.

    
function url2link($linktext) {
        
$linktext preg_replace("#\[(([a-zA-Z]+://)([a-zA-Z0-9?&%.;:/=+_-]*))\]#e""'<a href=\"$1\" target=\"_blank\">' . reduceurl(\"$3\", 30) . '</a>'"$linktext);
                
        return 
$linktext;
    } 


Соответственно в код необходимо добавить эти фунции, а там где идет сохранение комментария в БД вставить что то подобное:
PHP код:
 $comment url2link($comment); 

BFG 19.03.2011 00:38

а можно носом ткнуть именно туда куда нужно вставить?
PHP код:
 $comment url2link($comment); 

во вложении мой файл comments.php

Soniks 19.03.2011 12:11

Функция savecomments, перед строкой:
PHP код:
 $db->sql_query("INSERT INTO ".$prefix."_comments .... 

добавить
PHP код:
 $comment url2link($comment); 

BFG 19.03.2011 13:51

не получается, всё равно просто текст...

BFG 21.03.2011 01:01

и ещё, можно ли что бы при добавлении комментария обновлялись только сами комменты а не вся страница, а то если кто-то прочитал и 1 раз ответил получается +2 в прочитано...

Soniks 21.03.2011 18:21

BFG По средством AJAX запроса если только. Но можно сделать счетчик с запоминанием (читал данню статью пользователь или нет) через COOKIE.
Цитата не получается, всё равно просто текст...

Вот проще:
PHP код:
 function url2link($linktext) {;
        
$linktext preg_replace('/\\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*/i'"<a href=\"\\0\">\\0</a>"$linktext);      
        return 
$linktext;
    }
    echo 
url2link("текс http://www.test.ru/test.html все!"); 

BFG 22.03.2011 21:07

ерунда получается какая-то...
просто выводит
текс http://www.test.ru/test.html все!
над формой ввода комментария, чего и следовало ожидать ))) а в комментариях как и раньше просто текст.

Я вставлял эту функцию вместо предложенных ранее...

Soniks 23.03.2011 10:22

BFG я привел пример работы функции не стоит вставлять вывод echo. Используйте только функцию.

BFG 23.03.2011 12:08

Soniks, хорошо, тогда куда эту функцию в мой comments.php нужно вставить, а то как не пробую один пень просто текст...


Часовой пояс GMT +4, время: 09:29.

Copyright © 2005 by Soniks