|
|
|
| Нужно регулярное выражение которое будет заменять:
http://site.ru
на
<a href="http://site.ru">http://site.ru</a>
------------------------------------------------------------------------------------------------------------------------------
При условие, что в url может содержаться символы: ? . / & = и так далее.
Одним словом, все символы, которые могут быть url.
Пример заменяемого url: http://www.site.ru/softtime/index.php?id=12&time=128 | |
|
|
|
|
|
|
|
для: UnFast
(14.07.2008 в 16:31)
| |
<?php
$text = preg_replace('~http://\\S+~', '<a href="\\0">\\0</a>', $text);
|
Предполагается, что переменная $text содержит текст, уже обработанный htmlspecialchars. | |
|
|
|
|
|
|
|
для: sms-send
(14.07.2008 в 17:07)
| | Такое выражение не пропустит
www.site.ru/softtime/index.php?id=12&time=128
|
| |
|
|
|
|
|
|
|
для: AcidTrash
(14.07.2008 в 17:29)
| | Про угадывание ссылок в тексте никто не говорил. Только со схемой http. | |
|
|
|
|
|
|
|
для: sms-send
(14.07.2008 в 17:36)
| | Твой вариант неподходит...
А вообще, ссылка должна заменяться при условие, что есть http!!! | |
|
|
|
|
|
|
|
для: UnFast
(14.07.2008 в 17:50)
| | >Твой вариант неподходит...
А конкретней можно?) Что именно не подходит? | |
|
|
|
|
|
|
|
для: sms-send
(14.07.2008 в 18:21)
| | Твоё рег.выражение неограничено, то есть под действие замены попадают ненужные символы. | |
|
|
|
|
|
|
|
для: UnFast
(14.07.2008 в 18:26)
| | \\S поменять на [,.!@#№*$%&()_+/?=\\-;:\\~\\dA-Za-zА-Яа-яЁё] | |
|
|
|
|
|
|
|
для: sms-send
(14.07.2008 в 18:40)
| |
<?php
$var_text = " text new link1 = http://site.ru ".
"text new link2 = http://php.net ".
"text new link3 = http://softtime.ru/forum/addpost.php?id=2&theme=2 ";
$pattern = "/(http:\/\/\S*\s+)/";
$count = preg_match_all($pattern, $var_text, $mucho);
for ($i=0; $i < $count; $i++)
$var_text = str_replace($mucho[0][$i], '<a href ="'.$mucho[0][$i].'">'.$mucho[0][$i].'</a>', $var_text);
echo $var_text;
?>
| Немного через зад, но рабочий день закончился, доделать некогда. | |
|
|
|
|
|
|
|
для: GeorgeIV
(14.07.2008 в 18:58)
| | Эмм.. а чем этот вариант функционально отличается от моего первого варианта, кроме обязательного наличия пробельных символов в конце ссылки?)) Которые, кстати, в эту ссылку попадут. И зачем так вымудряться "через зад", если существует preg_replace ?)
+ строку всё-таки сначала нужно обработать htmlspecialchars, иначе будут проблемы как минимум с символом "&" | |
|
|
|
|
|
|
|
для: GeorgeIV
(14.07.2008 в 18:58)
| | to GeorgeIV
Вообщето имелось ввиду заменить, а не выбрать, для начала.
sms-send заметил правильно, что для замены существует preg_replace. | |
|
|
|
|
|
|
|
для: AcidTrash
(14.07.2008 в 22:41)
| | А как ты одним реплэйсом заменишь все (неопределенное заранее количество в не определенном месте, судя по вопросу) вхождения http? | |
|
|
|
|
|
|
|
для: sms-send
(14.07.2008 в 18:40)
| | Почти то.. Только мне нужно, исключить из замены символ < или > (> <)
и сами символы и их html эквиваленты..
например http://site.ru/>
то меняем на <a href="http://site.ru/">http://site.ru/</a>> | |
|
|
|
|
|
|
|
для: UnFast
(14.07.2008 в 19:39)
| | Угловые скобки и так исключены, а эквиваленты то зачем исключать?
Вполне легальная ссылка:
http://site.ru/?var1=123>
UPD:
Хотя и правда, обрабатываем ведь html код...
~http://(?:[,.!@#№*$%()_+/?=\\-;:\\~\\dA-Za-zА-Яа-яЁё]|&(?!lt;|gt;))+~
|
| |
|
|
|
|
|
|
|
для: sms-send
(14.07.2008 в 19:45)
| | Теперь правильно работает...
Респект тебе sms-send. | |
|
|
|
|
|
|
|
для: UnFast
(14.07.2008 в 20:17)
| | >Теперь правильно работает...
Интересно, где же такие ссылки то есть? Начиналось то все как я понимаю с обычного парсинга и разбора html-страниц, где ссылки реальные и как вы потом указали, обязательно должны начинаться с http://.
Первоначальной регулярки от sms-send вполне хватило бы.
P.S. ТЗ надо изначально со всеми аспектами составлять. | |
|
|
|
|
|
|
|
для: sms-send
(14.07.2008 в 19:45)
| | - | |
|
|
|
|
|
|
|
для: UnFast
(14.07.2008 в 16:31)
| | Что т я не понял? Какая же тут замена?
$urlo = "http://site.ru";
$urlo_with_link ='<a href="'.$urlo.'">'.$urlo.'</a>';
|
| |
|
|
|
|
|
|
|
для: GeorgeIV
(14.07.2008 в 17:07)
| | Предпологается динамический адрес..
И переменная будет содержать например некий текст:
$var = "php site http://softtime.ru/ ..."; | |
|
|
|
|
|
|
|
для: UnFast
(14.07.2008 в 17:45)
| | Так все равно она будет содержать УРЛ как ссылку и как текстовую часть. Что то мне тогда непонятна постановка вопроса.
Для чего тут регулярное выражение, если надо одну переменную с урлом вставить в два места. | |
|
|
|
|
|
|
|
для: GeorgeIV
(14.07.2008 в 17:53)
| | Смотри, спецально для тебя напишу новую переменную:
$var_text = " text new link1 = http://site.ru
text new link2 = http://php.net
text new link2 = http://softtime.ru/forum/addpost.php?id=2&theme=2 ";
Текст может быть произвольный... а url, начинающиеся с http нужно заменить на <a href.........</a> | |
|
|
|
|
|
|
|
для: UnFast
(14.07.2008 в 18:01)
| | Понятно. Тогда начало - http, а конец - пробельный символ или граница слова. Ща попробую. | |
|
|
|