|
|
|
| Хочется улучшить защиту ббкодов
Функция
$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 в 01:13)
| | Что, ни кто не знает? | |
|
|
|
|
|
|
|
для: Halfi
(18.02.2007 в 22:43)
| | Если Вы хотите чтобы строка замены воспринималась как выражение на php, нужно поставить модификатор 'e' в конец шаблона. ...#ie | |
|
|
|
|
|
|
|
для: 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 | |
|
|
|
|
|
|
|
для: Halfi
(18.02.2007 в 23:51)
| | В $url попадет \1, а не адрес... Нужно использовать модиф. e | |
|
|
|
|
|
|
|
для: Halfi
(18.02.2007 в 23:51)
| | Вы сами себя запутали. Вернитесь назад. | |
|
|
|
|
|
|
|
для: Trianon
(19.02.2007 в 09:31)
| | Trianon, kasmanaft
Действительно, я сам себя запутал, помогло, изначально не воспользовался советом, подумав, что меня не до конца поняли, а всего лиш надо было поставить 1 буковку, а я мудрил =))) | |
|
|
|