Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Активные ссылки
 
 автор: Jaroslav   (06.09.2006 в 22:16)   письмо автору
 
 

Здравствуйте!

Подскажите, как сделать так, чтобы при добавлении текста, в котором есть ссылки, они становились активными?

Например, в файл сохраняется текст:

*****************************

http://www.rht.rtrt-dfg.ru/

Привет всем!

http://rtytu.gfdh-gfh.ru/
www.5y.ey5-rhrt.ru/

*****************************

Надо сделать так, чтобы при отображении в браузере ВСЕ ссылки были активными.

   
 
 автор: cheops   (06.09.2006 в 22:30)   письмо автору
 
   для: Jaroslav   (06.09.2006 в 22:16)
 

Можно поступить следующим образом
<?php 
  $text 
'Здравствуйте!
Подскажите, как сделать так, чтобы при добавлении текста, в котором есть ссылки, они становились активными?
Например, в файл сохраняется текст:
*****************************
http://www.rht.rtrt-dfg.ru/
Привет всем!
http://rtytu.gfdh-gfh.ru/
www.5y.ey5-rhrt.ru/
*****************************
Надо сделать так, чтобы при отображении в браузере ВСЕ ссылки были активными.'
;

  
$pattern "#(http|www)[^\s]+#is";
  echo 
preg_replace_callback($pattern"replace_url"$text);

  
// функция обратного вызова
  
function replace_url($matches
  {
    if(
substr($matches[0], 04) != "http") return "<a href=http://$matches[0]>$matches[0]</a>";
    else return 
"<a href=$matches[0]>$matches[0]</a>";
  }
?>

   
 
 автор: Jaroslav   (06.09.2006 в 22:46)   письмо автору
 
   для: cheops   (06.09.2006 в 22:30)
 

Все отлично, кроме одного.
Не учитывается перенос строк.
Как это можно подправить?

   
 
 автор: cheops   (06.09.2006 в 22:52)   письмо автору
 
   для: Jaroslav   (06.09.2006 в 22:46)
 

Перенос в URL? Хм... не желательно бы URL разрывать - он теряет в этом случае правильность...

   
 
 автор: Jaroslav   (06.09.2006 в 23:02)   письмо автору
 
   для: cheops   (06.09.2006 в 22:52)
 

Хотел сделать так, что если в переменной $text присутствует перенос строки, то чтобы он сохранялся. Уже сам разобрался - немного подправил код.
Спасибо за помощь!


<?php
$text = 'Здравствуйте!
Подскажите, как сделать так, чтобы при добавлении текста, в котором есть ссылки, они становились активными?
Например, в файл сохраняется текст:
*****************************
http://www.rht.rtrt-dfg.ru/
Привет всем!
http://rtytu.gfdh-gfh.ru/
www.5y.ey5-rhrt.ru/
*****************************
Надо сделать так, чтобы при отображении в браузере ВСЕ ссылки были активными.';

$pattern = "#(http|www)[^\s]+#is";
$info= preg_replace_callback($pattern, "replace_url", $text);
$info =nl2br($info);
print $info;

// функция обратного вызова
function replace_url($matches)
{
if(substr($matches[0], 0, 4) != "http") return "<a href=http://$matches[0]>$matches[0]</a>";
else return "<a href=$matches[0]>$matches[0]</a>";
}
?>

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования