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

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

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

 

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

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

тема: как сделать что бы скопированые ссылки были активные
 
 автор: 1prom   (05.02.2011 в 14:14)   письмо автору
 
 

Привет всем!

нужно чтобы тексовые ссылки типа

http://www.softtime.ru/forum/addtheme.php?id_forum=1


были активными. То есть, я понимаю нужно в тексте искать "http://" и заменить текстовую ссылку на <a href="http://www.softtime.ru/forum/addtheme.php?id_forum=1">http://www.softtime.ru/forum/addtheme.php?id_forum=1</a>

Кто знает как это сделать?

  Ответить  
 
 автор: Косорылый   (05.02.2011 в 14:16)   письмо автору
 
   для: 1prom   (05.02.2011 в 14:14)
 

В поиск по разделу регулярные выражения там найдёте то что нужно вам

  Ответить  
 
 автор: neadekvat   (05.02.2011 в 14:30)   письмо автору
 
   для: 1prom   (05.02.2011 в 14:14)
 

http://softtime.ru/forum/read.php?id_forum=6&id_theme=29413

  Ответить  
 
 автор: 1prom   (05.02.2011 в 14:57)   письмо автору
 
   для: neadekvat   (05.02.2011 в 14:30)
 

отлично, спасиб

  Ответить  
 
 автор: 1prom   (05.02.2011 в 18:32)   письмо автору
 
   для: neadekvat   (05.02.2011 в 14:30)
 

Кстати в той теме:

$text = "http://site.ru blablabla";
echo preg_replace("#^(http://[^\s]+)#", '<a href="\1">\1</a>', $text);

не заменяет, если перед "http://site.ru blablabla" поставить пробел или другой символ напр. "сайт http://site.ru blablabla"

Как сделать замену в таком случае?

  Ответить  
 
 автор: cheops   (05.02.2011 в 18:37)   письмо автору
 
   для: 1prom   (05.02.2011 в 18:32)
 

Уберите привязку к началу строки ^
<?php
  $text 
"сайт http://site.ru blablabla"
  echo 
preg_replace("#(http://[^\s]+)#"'<a href="\1">\1</a>'$text);
?>

  Ответить  
 
 автор: 1prom   (05.02.2011 в 19:24)   письмо автору
 
   для: cheops   (05.02.2011 в 18:37)
 

Спасибо, был бы еще идеальный вариант если применить функцию substr($link, 0, 1000); и обрезать ссылки длиннее 20 симв. можно так?

  Ответить  
 
 автор: cheops   (05.02.2011 в 19:30)   письмо автору
 
   для: 1prom   (05.02.2011 в 19:24)
 

Можно, переделайте запрос скрипт образом
<?php 
  $text 
"сайт http://site.ru blablabla";  
  echo 
preg_replace("#(http://[^\s]+)#e""'<a href=\"\\1\">'.substr('\\1', 0, 1000).'</a>'"$text); 
?>

  Ответить  
 
 автор: 1prom   (05.02.2011 в 19:40)   письмо автору
 
   для: cheops   (05.02.2011 в 19:30)
 

БЛАГОДАРЕН

  Ответить  
 
 автор: Красная_шляпа   (05.02.2011 в 15:00)   письмо автору
 
   для: 1prom   (05.02.2011 в 14:14)
 


<?php

$text 
preg_replace("/\[url\](.+)\[\/url\]/uis""<a href=\"\$1\" target=\"_blank\">\$1</a>"$text);

  Ответить  
 
 автор: 1prom   (05.02.2011 в 15:33)   письмо автору
 
   для: Красная_шляпа   (05.02.2011 в 15:00)
 

Это еще лучше!))

  Ответить  
 
 автор: Deed   (05.02.2011 в 20:40)   письмо автору
 
   для: 1prom   (05.02.2011 в 15:33)
 

А вот - совсем хорошо:


<?
function right_url($value){
    
$pattern "#(http(||s)://[-a-z0-9_\.\/]+(\.(html|php|pl|cgi))*[-a-z0-9_:@&\?=+,\.!/~*'%$\#]*)#i"
  
$value preg_replace($pattern,'<a href=$1>$1</a>',$value); 
  
$pattern "#([-0-9a-z_\.]+@[-0-9a-z_^\.]+\.[a-z]{2,3})#i"
  
$value preg_replace($pattern,'<a href=mailto:\\1>\\1</a>',$value); 
  return 
$value;   
}
?>


Ловит, в том числе, и "мыльные" ссылоны.

  Ответить  
 
 автор: 1prom   (05.02.2011 в 21:22)   письмо автору
 
   для: Deed   (05.02.2011 в 20:40)
 

Да, надо взять на заметкус)

  Ответить  
Rambler's Top100
вверх

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