powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (PHP) вставка ссылки
10 сообщений из 10, страница 1 из 1
(PHP) вставка ссылки
    #33112929
twistfire
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот тут на форуме, так все красиво сделано.
Себе тоже сделал, в интерфейс к бд.
Необходимо добавлять новости, с кучей ссылок.
Ну вот и была выбрана конструкция.
добавляется примерно как здесь
Код: plaintext
А как сделать в PHP скрипте, преобразование єтого в ссілку
<a href=http://netgen.com.ua?xxx=xxxx...>ссылка</a>
...
Рейтинг: 0 / 0
(PHP) вставка ссылки
    #33112942
*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
*
Гость
...
Рейтинг: 0 / 0
(PHP) вставка ссылки
    #33113046
twistfire
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну помогите написать паттерн, а то я совсем запутался...
Возможности тестить сейчас просто нет :(

Я пишу так:
для замены http://ssilka.ruvkmfk]
Код: plaintext
1.
2.
$pattern="\http://(*+)\]";
$stroka=preg_replace($pattern, "<a href=http://>".$ 1 , $str);

ПОМОГИТЕ!!!
ВРЕМЯ ЖМЕТ.
...
Рейтинг: 0 / 0
(PHP) вставка ссылки
    #33113049
Фотография XM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
 $a="test";
 $b=preg_replace("/\\(.+?)\\](.+?)\\[\/url\\]/", "<a href=\"\\ 1 \">\\2</a>", $a);

...
Рейтинг: 0 / 0
(PHP) вставка ссылки
    #33113060
Макс М.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
XM
Код: plaintext
1.
2.
3.
 $a="test";
 $b=preg_replace("/\\(.+?)\\](.+?)\\[\/url\\]/", "<a href=\"\\ 1 \">\\2</a>", $a);



$a = '[ url=javascript:alert(0)]click here';
...
Рейтинг: 0 / 0
(PHP) вставка ссылки
    #33113080
Фотография XM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Типа XSS bug? :) Пофиксим :)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
function escaper($matches){
        $tmp = preg_replace("/\"/", "% 22 ", $matches[1]);
        return "<a href=\"http://$tmp\">$matches[ 2 ]</a>";
 }
 function make_url_href($url){
        return preg_replace_callback("|\\http://(.+?)\\](.+?)\\[/url\\]|s", "escaper", $url);
 }
...
Рейтинг: 0 / 0
(PHP) вставка ссылки
    #33113096
twistfire
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
большое спасибо.
Оччень помогли.
...
Рейтинг: 0 / 0
(PHP) вставка ссылки
    #33113100
twistfire
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
только что-то не понятно, как вот єто работает...
Я в принципе понимаю, что это защита от javascript, но как?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
function escaper($matches){
        $tmp = preg_replace("/\"/", "% 22 ", $matches[1]);
        return "<a href=\"http://$tmp\">$matches[ 2 ]</a>";
 }
 function make_url_href($url){
        return preg_replace_callback("|\\http://(.+?)\\](.+?)\\[/url\\]|s", "escaper", $url);
 }

Объясните, если не сложно..
и пример использования, а то как-то непонятно (я не программист).
(у меня строка обозначена перем. $news :)
...
Рейтинг: 0 / 0
(PHP) вставка ссылки
    #33113124
Фотография XM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
 function escaper($matches){
        $tmp = preg_replace("/\"/", "% 22 ", $matches[1]);
        return "<a href=\"http://$tmp\">$matches[ 2 ]</a>";
 }
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
 function make_url_href($url){
        return preg_replace_callback("|\\http://([^\\]]+?)\\](.+?)\\[/url\\]|s", "escaper", $url);
        // комментарий к регекспу:
        //      группа  1  : ([^\]]+?) - последовательность любых символов кроме ']'
        //      группа  2  : (.+?) - последовательность  любых символов,
        //              квантификатор '+?' - мое обычное решение по уменьшению "жадности" регекспов :)
        // опция поиска '|s' - включать и переводы строки в шаблон (.+?)
        // prg_replace_callback - потому что надо бы пофиксить кавычки в первой группе:), поэтому вызывается
        //  для каждого совпадения ф-я escaper
 }
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
 // Пример исползования
 $news="Bla bla bla bla
        test -- this is a normal usage
        more bla bla bla
        http://test.com/a.cgi\" hack here]test -- a quote could lead to hack!
        javascript:alert(document.cookie)]click me -- won't work as only http:// protocol supplied!
        http://]empty shoul fail
        http://test.com/search] Attempt  nested hrefs fail 
        ";
  echo make_url_href($news);
На выходе:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Bla bla bla bla
        <a href="http://test.com/a.cgi?a=b&c+d">test</a> -- this is a normal usage
        more bla bla bla
        <a href="http://test.com/a.cgi%22 hack here">test</a> -- a quote could lead to hack!
        javascript:alert(document.cookie)]click me -- won't work as only http:// protocol supplied!
        http://]empty shoul fail
        <a href="http://test.com/search"> Attempt  nested hrefs fail </a>
...
Рейтинг: 0 / 0
(PHP) вставка ссылки
    #33113309
twistfire
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (PHP) вставка ссылки
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]