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

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

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

 

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

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

тема: Проблема BBCode
 
 автор: Halfi   (18.02.2007 в 01:13)   письмо автору
 
 

Хочется улучшить защиту ббкодов
Функция

$comment = "[mail]df@gf.er[/mail]";
function edit_mail($url)
{
   $url = str_replace( "@", "[аt]", $url );
   $url = str_replace( ".", "[dot]", $url );
   return "<a href=\"mailto:$url>$url</a>";
}
$comment = preg_replace( "#\[mail\](\S+?)\[/mail\]#i", "edit_mail('\\1')", $comment );

echo $comment;

выдает:[quote]edit_mail('df@gf.er')[/quote]
Без функции рабоьает прекрасно:
$comment = preg_replace( "#\[email\](\S+?)\[/email\]#i", "<a href=\"mailto:\\1\">\\1</a>", $comment );

Почему функция не обрабатывается?

   
 
 автор: Halfi   (18.02.2007 в 22:43)   письмо автору
 
   для: Halfi   (18.02.2007 в 01:13)
 

Что, ни кто не знает?

   
 
 автор: Trianon   (18.02.2007 в 23:18)   письмо автору
 
   для: Halfi   (18.02.2007 в 22:43)
 

Если Вы хотите чтобы строка замены воспринималась как выражение на php, нужно поставить модификатор 'e' в конец шаблона. ...#ie

   
 
 автор: Halfi   (18.02.2007 в 23:51)   письмо автору
 
   для: Trianon   (18.02.2007 в 23:18)
 

Немного разобрался
<? 
$comment 
"[mail]hi@help.me[/mail]"
function 
edit_mail($url

   
$url2 str_replace('@','[at]',$url);
   return 
"<a href=\"mailto:$url\">$url2</a> "

$comment preg_replace"#\[mail\](\S+?)\[/mail\]#i"edit_mail('\\1'), $comment); 
echo 
$comment;  
?>

В нутри функции не заменяется @ на [at]
Это элементарный скрипт, а вот к примеру заменить javascript на java script

   
 
 автор: kasmanaft   (19.02.2007 в 05:10)   письмо автору
 
   для: Halfi   (18.02.2007 в 23:51)
 

В $url попадет \1, а не адрес... Нужно использовать модиф. e

   
 
 автор: Trianon   (19.02.2007 в 09:31)   письмо автору
 
   для: Halfi   (18.02.2007 в 23:51)
 

Вы сами себя запутали. Вернитесь назад.

   
 
 автор: Halfi   (19.02.2007 в 17:03)   письмо автору
 
   для: Trianon   (19.02.2007 в 09:31)
 

Trianon, kasmanaft
Действительно, я сам себя запутал, помогло, изначально не воспользовался советом, подумав, что меня не до конца поняли, а всего лиш надо было поставить 1 буковку, а я мудрил =)))

   
Rambler's Top100
вверх

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