[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Кликабельные ссылки
denis79513
Здравствуйте, нужно реализовать следующее, чтобы все ссылки в тексте на сайте типа http://mail.ru автоматически становились кликабельными. Помогите пожалуйста это сделать. А у меня появилась вот такая идея, допустим ссылки находятся в тексте сайта - переменная $body. Наверно нужно применить этой переменной свой класс, а в классе поместить обработчик ссылок. Помогите сделать этот обработчик.

И вот еще нашел в интернете скрипт но он не работает, в чем ошибка?

// Функция настройки длинны создаваемой ссылки
function trimlink($text, $length) {
$dec = array("&", """, "'", "\", '"', "'", "<", ">");
$enc = array("&", """, "'", "
\", """, "'", "<", ">");
$text = str_replace($enc, $dec, $text);
if (strlen($text) > $length) $text = substr($text, 0, ($length-3))."...";
$text = str_replace($dec, $enc, $text);
return $text;
}
// Загоняем преобразуемое текстовое сообщение в переменную
$text = "Это конечно все хорошо! Но я знаю еще один хороший сайт - http://StickOn.ru, а так же советую посетить www.denismalyugin.ru";
// Делаем колдовство и находим ссылки :-)
$text = preg_replace('#(^|[n ])((http|https|ftp|ftps)://[w#$%&~/.-;:=,?@[]()+]*)#sie' , "'\1<a href="'.trim('\2').'" target="_blank" title="autolink">'.trimlink('\2', 20).(strlen('\2')>30?substr('\2', strlen('\2')-10, strlen('\2')):'').'</a>'", $text);
$text = preg_replace("#(^|[n ])((www|ftp).[w#$%&~/.-;:=,?@[]()+]*)#sie", "'\1<a href="http://'.trim('\2').'" target="_blank" title="autolink">'.trimlink('\2', 20).(strlen('\1')>30?substr('\2', strlen('\2')-10, strlen('\2')):'').'</a>'", $text);
// Выводим текстовое сообщение на экран

echo $text;




Спустя 4 минуты, 20 секунд (7.03.2011 - 19:05) quickxyan написал(а):
что значит кликабельные? ссылка она как бы для того и предназнаена что бы по ней кликали.

Спустя 6 минут, 28 секунд (7.03.2011 - 19:12) denis79513 написал(а):
Создай html документ напиши туда http://mail.ru открой его в браузере и попробуй кликнуть, ну как? Это на форуме все ссылки которые я пишу становятся кликабельными, т.к. на нем есть эта функция.

Спустя 3 минуты, 11 секунд (7.03.2011 - 19:15) Dron19 написал(а):
Цитата (denis79513 @ 7.03.2011 - 16:12)
Создай html документ напиши туда http://mail.ru открой его в браузере и попробуй кликнуть, ну как? Это на форуме все ссылки которые я пишу становятся кликабельными, т.к. на нем есть эта функция.

вот ему эта функция и нужна, он хочет ее написать на РНР. Не тормози wink.gif

Спустя 9 минут, 50 секунд (7.03.2011 - 19:25) denis79513 написал(а):
Неужели никто с этим не сталкивался?

Спустя 7 минут, 50 секунд (7.03.2011 - 19:32) inpost написал(а):
denis79513
Посмотри внимательно, там ошибка вверху! Даже тут помечено неверно! Что ты хотел добиться этим: " " "

Спустя 31 секунда (7.03.2011 - 19:33) Dron19 написал(а):
inpost, там целых три ошибки таких

Спустя 1 минута, 2 секунды (7.03.2011 - 19:34) Dron19 написал(а):
сейчас я попробую тебе код написать

Спустя 2 минуты, 24 секунды (7.03.2011 - 19:36) Dron19 написал(а):
с тебя плюс в карму :)



#@
#@
#@ Author by Dron19
#@
#@


$indexer = "Привет, зайди на http://yandex.ru, а еще можешь зайти на www.google.com, кстати www.youtube.com - тут очень много видео";
preg_match_all("#(http://|www.)[a-z0-9_\.-]+\.[a-z]{2,5}#iu",$indexer,$match);

echo print_r($match) . '<br><br>';

foreach($match[0] as $val) {
$link = "<a href='".$val."'>".$val."</a>";
$indexer = str_replace($val,$link,$indexer);
}
echo $indexer . '<br><br>';

Спустя 2 минуты, 11 секунд (7.03.2011 - 19:39) inpost написал(а):
Dron19
http://www.phpforum.ru - не пройдет =)
условия http:// - ВСЕГДА!
www - может быть, может не быть!

Спустя 1 минута, 43 секунды (7.03.2011 - 19:40) Dron19 написал(а):
Цитата (inpost @ 7.03.2011 - 16:39)
Dron19
http://www.phpforum.ru - не пройдет =)
условия http:// - ВСЕГДА!
www - может быть, может не быть!

ну дык я же не сделал универсальную, но если добавить туда всего пару случаев и почти для всех видов ссылок пройдет

Спустя 1 минута, 4 секунды (7.03.2011 - 19:41) denis79513 написал(а):
Цитата (Dron19 @ 7.03.2011 - 16:36)
с тебя плюс в карму :)



#@
#@
#@ Author by Dron19
#@
#@


$indexer = "Привет, зайди на http://yandex.ru, а еще можешь зайти на www.google.com, кстати www.youtube.com - тут очень много видео";
preg_match_all("#(http://|www.)[a-z0-9_\.-]+\.[a-z]{2,5}#iu",$indexer,$match);

echo print_r($match) . '<br><br>';

foreach($match[0] as $val) {
$link = "<a href='".$val."'>".$val."</a>";
$indexer = str_replace($val,$link,$indexer);
}
echo $indexer . '<br><br>';

Не работает, запускаю через денвер, в результате отображается

Array ( [0] => Array ( ) [1] => Array ( ) ) 1

Привет, зайди на http://yandex.ru, а еще можешь зайти на www.google.com, кстати www.youtube.com - тут очень много видео

в итоге ссылки не кликабельны

Спустя 1 минута, 19 секунд (7.03.2011 - 19:43) Dron19 написал(а):

#@
#@
#@ Author by Dron19
#@
#@


$indexer = "Привет, зайди на http://yandex.ru, а еще можешь зайти на www.google.com, кстати www.youtube.com - тут очень много видео, http://www.phpforum.ru";
preg_match_all("#(http://|www.|http://www.|ftp://|ftps://)[a-z0-9_\.-]+\.[a-z]{2,5}#iu",$indexer,$match);

echo print_r($match) . '<br><br>';

foreach($match[0] as $val) {
$link = "<a href='".$val."'>".$val."</a>";
$indexer = str_replace($val,$link,$indexer);
}
echo $indexer . '<br><br>';

а теперь пройдет

Спустя 1 минута, 46 секунд (7.03.2011 - 19:44) Dron19 написал(а):
потому что у тебя страница не в кодировке utf-8 скорей всего.

$indexer = "Привет, зайди на http://yandex.ru, а еще можешь зайти на www.google.com, кстати www.youtube.com - тут очень много видео";
preg_match_all("#(http://|www.)[a-z0-9_\.-]+\.[a-z]{2,5}#iu",$indexer,$match);


Замени на

$indexer = "Привет, зайди на http://yandex.ru, а еще можешь зайти на www.google.com, кстати www.youtube.com - тут очень много видео, http://www.phpforum.ru";
preg_match_all("#(http://|www.|http://www.|ftp://|ftps://)[a-z0-9_\.-]+\.[a-z]{2,5}#i",$indexer,$match);

и скажи результат

Спустя 1 минута, 31 секунда (7.03.2011 - 19:46) inpost написал(а):
.com.ua - не пройдет =)

(\.[a-z]{2,5})+ - так решает.

Модификаторы сделай: ius для регулярки!

Спустя 33 секунды (7.03.2011 - 19:47) Dron19 написал(а):
да, это из-за кодировки

Спустя 2 минуты, 8 секунд (7.03.2011 - 19:49) Dron19 написал(а):
ну доменное имя могу добавить еще, что бы вот такой адрес прошел

http://www.tester.phpforum.com.ru

Спустя 1 минута, 17 секунд (7.03.2011 - 19:50) Dron19 написал(а):
короче, если ты работаешь не с utf-8 кодировкой, то вот код, который сделает ссылки кликабельными

<?php

#@
#@
#@ Author by Dron19
#@
#@


$indexer = "Привет, зайди на http://yandex.ru, а еще можешь зайти на www.google.com, кстати www.youtube.com - тут очень много видео, http://www.phpforum.ru";
preg_match_all("#(http://|www.|http://www.|ftp://|ftps://)[a-z0-9_\.-]+\.[a-z]{2,5}#i",$indexer,$match);

foreach($match[0] as $val) {

$link = "<a href='".$val."'>".$val."</a>";
$indexer = str_replace($val,$link,$indexer);

}

echo $indexer . '<br><br>';


?>

Спустя 1 минута, 45 секунд (7.03.2011 - 19:52) denis79513 написал(а):
еще можно https добавить=)

А по делу, как это убрать, или это только в денвере отображается?

Array ( [0] => Array ( [0] => http://yandex.ru [1] => www.google.com [2] => www.youtube.com [3] => http://www.phpforum.ru ) [1] => Array ( [0] => http:// [1] => www. [2] => www. [3] => http:// ) ) 1


И теперь ссылки кликабельны, но остальной текст вокруг ссылок вот такой:

&#65533;�����, ����� �� http://yandex.ru, � ��� ������ ����� �� www.google.com, ������ www.youtube.com - ��� ����� ����� �����, http://www.phpforum.ru


Если поставить на хостинг то будет норм, а если на денвер ставишь с кодировкой utf всегда такая фигня, не знаете, как сменить кодировку денвера?

Спустя 1 минута, 47 секунд (7.03.2011 - 19:53) denis79513 написал(а):
Все, проблему решил, спасибо огромное!!!
С меня ОГРОМНЫЙ плюс.

Спустя 2 минуты, 33 секунды (7.03.2011 - 19:56) Dron19 написал(а):
обращайся, если какая-нибудь ссылка не пройдет, говори, подкрашу код и все будет ок

Спустя 3 минуты, 38 секунд (7.03.2011 - 20:00) Dron19 написал(а):
inpost, адрес даже аткой пройдет http://www.tester.phpforum.com.ru

Спустя 5 минут, 14 секунд (7.03.2011 - 20:05) inpost написал(а):
Dron19
Ошибся, точно будет, зато такой уже не будет:
phpforum.ru/ -такой вариант часто пишут.
или
inpost.dp.ua/lessons/lessons.php - из-за слешей, как ты догадался.

Спустя 10 минут, 57 секунд (7.03.2011 - 20:16) Dron19 написал(а):
Цитата (inpost @ 7.03.2011 - 17:05)
Dron19
Ошибся, точно будет, зато такой уже не будет:
phpforum.ru/ -такой вариант часто пишут.
или
inpost.dp.ua/lessons/lessons.php - из-за слешей, как ты догадался.

знаешь, этот форум не может прочитать даже те, которые предложенный скрипт читает, это вроде только после www. читает и все и этого достаточно, что бы Вам модератором париться удалять рекламу =) Ты представляяешь если все форумы такой скрипт будут использовать? wink.gif wink.gif wink.gif

Спустя 4 минуты, 59 секунд (7.03.2011 - 20:21) inpost написал(а):
http://phpforum.ru/ - работает! В твоём скрипте - не работает!

Спустя 30 минут, 8 секунд (7.03.2011 - 20:51) Dron19 написал(а):
inpost, да елки палки, я же человеку показал принцип. Ну а дописать может каждый. Я же не претендую там на лучший скрипт года... Хватит критиковать!

Спустя 4 часа, 27 минут, 17 секунд (8.03.2011 - 01:18) inpost написал(а):
Dron19
Ты первый начал про форум наш говорить. Где критика? Просто скрипты такие лишь бы как не делаются =) Если делаешь, так делай сразу хорошо! =)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.