|
|
|
| Я исользую функцию nl2br() для вывода текстов на сайте набранных пользователями. Но в текстах присутствуют e-mail и ссылки. Каким образом можно их отловить в этом тексте и заменить их в формат к примеру с sd@ttt.ru в формат
<a href="mailto:sd@ttt.ru">sd@ttt.ru</a>
| и ссылки тоже к подобному виду привести? | |
|
|
|
|
|
|
|
для: Alex Boxgorn
(27.05.2009 в 06:32)
| | Тут на форуме книгу уже написать можно по примерам решения данной задачи. Воспользуйтесь поиском | |
|
|
|
|
|
|
|
для: mihdan
(27.05.2009 в 10:51)
| | Перед тем как вас беспокоить я пользовался поиском. Может как-то не так ищу, что ничего по теме не нахожу. :-( | |
|
|
|
|
|
|
|
для: Alex Boxgorn
(27.05.2009 в 06:32)
| | Так?
<?php
$text = 'адрес эл. почты: mail@mail.ru';
$text = eregi_replace('([_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,3})',
'<a href="mailto:\\1">\\1</a>', $text);
echo $text;
?>
|
<?php
$text = 'адрес сайта: http://domain.ru';
$text = preg_replace("/(http|ftp)(s)?:(\\/\\/)((\\w|\\.)+)(\\/)?(\\S+)?/i", "<a href=\"\\0\" target=\"_blank\">\\0</a>", $text);
echo $text;
?>
|
| |
|
|
|
|
|
|
|
для: Незнайка
(27.05.2009 в 19:46)
| | $text = eregi_replace('([_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,3})', {2,3}
Лучше использовать preg_replace.
$text = preg_replace('#([_.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,6})#',
'<a href="mailto:\\1">\\1</a>', $text);
|
{2,3}
С доменами типа museum, travel и тд, дуплятся?
Насчет второго.
Если будет просто www.google.ru ? | |
|
|
|
|
|
|
|
для: AcidTrash
(27.05.2009 в 22:20)
| | >Лучше использовать preg_replace.
Понятно, Спасибо)
>С доменами типа museum, travel и тд, дуплятся?
C этим да, "косяк"))
>Если будет просто www.google.ru ?
Работать не будет...
А как бы правильно записать, чтобы и такие адреса активировались в ссылку? | |
|
|
|
|
|
|
|
для: Незнайка
(28.05.2009 в 09:54)
| | А как бы правильно записать, чтобы и такие адреса активировались в ссылку?
По вашему примеру примерно так:
$text = preg_replace("/(http|ftp|www.)(:\\/\\/)+?((\\w|\\.)+)(\\/)?(\\S+)?/i", "<a href=\"\\0\" target=\"_blank\">\\0</a>", $text);
|
| |
|
|
|
|
|
|
|
для: AcidTrash
(28.05.2009 в 22:20)
| | Спасибо.
К сожалению не работает, если адрес например: www.google.ru | |
|
|
|
|
автор: 345345 (29.05.2009 в 19:17) |
|
|
для: Незнайка
(29.05.2009 в 09:28)
| | Потому что это это не адрес, вот и не работает. | |
|
|
|
|
|
|
|
для: 345345
(29.05.2009 в 19:17)
| | >Потому что это это не адрес, вот и не работает.
Имеете в виду, что адрес должен начинаться с http, ftp и т.п? | |
|
|
|
|
|
|
|
для: 345345
(29.05.2009 в 19:17)
| | Спорить о том, адрес это или нет, не буду.
Однако вопрос был в другом. | |
|
|
|
|
|
|
|
для: Незнайка
(29.05.2009 в 09:28)
| | Да, в теге A, www не воспринимается как адрес. | |
|
|
|
|
|
|
|
для: AcidTrash
(29.05.2009 в 22:19)
| | >... в теге A, www не воспринимается как адрес.
А можно ли, как-то сделать, чтобы заработало? А то я, что-то не в курсе, как сделать... | |
|
|
|