Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Тексты > Класс подсветки e-mail


Автор: PARROT 18.11.2005, 11:20
Не получается написать класс подсветки для e-mail, в случае нахождения его в тексте сообщения форума.
Код

<?php
class mail {

        function Assim($text) {

                $text        = preg_replace("#^([a-z0-9]){1}[a-z0-9\-_.+]*([a-z0-9]){1}@[a-z0-9]{1,}(([a-z0-9]{1,}[a-z0-9\-\.]{0,1}[a-z0-9]{1,})|[a-z0-9]{1,})*\.[a-z]{2,4}$#i", "<a href=\"_blank\" mailto:\"\\1\">\\1</a>", $text);

        }
        }
?>
Привет, Вася!
<?
$text=mail::Assim($text);
$text="[email protected] Большое спасибо за сайт. Очень понравился! Простенько, но со вкусом. Приятно, что про нас написали. Сотрудник издательского отдела.";
echo $text;
?>

Результат: Не подсвечивается е-mail. smile

Автор: Darhazer 18.11.2005, 11:52
Привет,
Ты должен установить значения $text перед визове Assim:

Код

$text="[email protected] Большое спасибо за сайт. Очень понравился! Простенько, но со вкусом. Приятно, что про нас написали. Сотрудник издательского отдела.";
$text=mail::Assim($text);
echo $text;


Во вторие, у тебя HTML код:
Код
"<a href=\"_blank\" mailto:\"\\1\">\\1</a>"

Должен быт:
Код
"<a href=\"mailto:\\1\" target=\"_blank\">\\1</a>"


Автор: Gold Dragon 18.11.2005, 12:01
так как не селён в регах, то напишу свою логику

- есть строка в которой в каком то месте стоит мыло ($stroka)
- с помощью регов вычленяем этот адрес ($email)
- потом добавляем теги $email_1 = "<a href....>".$email."</a>"
- потом заменяем строку на соответствующую $stroka = str_replace ($email, $email_1, $stroka) - (если я ничего не напутал)

где-то так..

Автор: PARROT 18.11.2005, 12:13
Так оно вообще ничего не печатает.
Код

<?php
class mail {

        function Assim($text) {

                $text        = preg_replace("#^([a-z0-9]){1}[a-z0-9\-_.+]*([a-z0-9]){1}@[a-z0-9]{1,}(([a-z0-9]{1,}[a-z0-9\-\.]{0,1}[a-z0-9]{1,})|[a-z0-9]{1,})*\.[a-z]{2,4}$#i", "<a href=\"mailto:\\1\" target=\"_blank\">\\1</a>", $text);

        }
        }
?>
Привет, Вася!
<?
$txt="[email protected] Большое спасибо за сайт. Очень понравился! Простенько, но со вкусом. Приятно, что про нас написали. Сотрудник издательского отдела.";
$txt=mail::Assim($txt);
echo $txt;
?>

Автор: -=Ustas=- 18.11.2005, 13:25
PARROT, у тебя этот метод function Assim($text) ничего не возвращяет. А надл бы return $text; еще поставить smile
Добавлено @ 13:34
Да и с регами у тебя проблемка была, короче вот, подправил:
Код

<?php

class mail {
    function Assim($text)
    {
        $text = preg_replace("/[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*/iS", "<a href=\"mailto:\\0\">\\0</a>", $text);

        return $text;
    }
}

?>

Привет, Вася!

<?

$txt = "[email protected] Большое спасибо за сайт. Очень понравился! Простенько, но со вкусом. Приятно, что про нас написали. Сотрудник издательского отдела.";
$txt = mail::Assim($txt);
echo $txt;

?>


Вот только что мне не понятно, так это для чего ради такой функции использовать класс?! smile

Автор: PARROT 18.11.2005, 13:36
Находит и подсвечивает, зато с регом какая-то беда:
Код

//html
Привет, Вася!  <a href="mailto:v" target="_blank">v</a> Большое спасибо за сайт. Очень понравился! 
Простенько, но со вкусом. Приятно, что про нас написали. Сотрудник издательского отдела.

Код

<?php

$text="Привет, Вася!  [email protected] Большое спасибо за сайт. Очень понравился! Простенько, но со вкусом. 
Приятно, что про нас написали. Сотрудник издательского отдела.";
        function Assim($text) {

                $text= preg_replace("#(\w|\d){1}(\w|\d|\-|_|\.|\+)+?(\w|\d){1}@((\w|\d){1,}(\-|\.){0,1}(\w|\d){1,})+?\.(\w){2,4}#", "<a href=\"mailto:\\1\" target=\"_blank\">\\1</a>", $text);
                return $text;

        }


$text=Assim($text);

?>
<? echo $text; ?>

Автор: -=Ustas=- 18.11.2005, 13:47
Я же тебя нормальный рабочий рег написал...!?

Автор: PARROT 18.11.2005, 13:56
Да, спасибо, работает! УРА!!!
Цитата

Вот только что мне не понятно, так это для чего ради такой функции использовать класс?! 

Для моего форума, там есть класс для подсветки тегов, урлов и еще чего-то, а вот для подсветки мыла нет. Хочу дописать туда. А то пишешь мыло, а его прихожиться копировать. Хотя мыло в открытую держать нельзя, но мало ли... На всякий пожарный пусть будет.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)