2015-02-10 2 views
1

У меня есть (многие) электронные письма, содержащие адреса, такие как < [email protected]> внутри тела.Regex replace, адрес электронной почты из внутреннего тела электронной почты

Я хочу удалить < и> из тела электронной почты, но только там, где есть и @ внутри (в теле есть также теги HTML, которые должны оставаться).

я могу соответствовать адресу с этим регулярным выражением:

^<.[^@][email protected][^@]+.>$ 

, Но как не я заменить это только адрес и не < или>?

+0

Ну, строки символьные массивы ... –

+0

Есть пробелы или вы просто использовать те, чтобы установить угловые скобки явно отдельно от электронной почты? То есть адрес электронной почты выглядит следующим образом: '<[email protected]>' или вот так: '<[email protected]>'? Если последнее, оно должно быть таким же простым, как поиск знака '@' между двумя угловыми скобками, установленными границами слов. –

ответ

2

Для поиска адреса вы хотите использовать что-то вроде этого:

(?:<)([^>]*@[^>]*)(?:>) 

Please see Regex 101 here. Я использую не-захвата группы для угловых скобок, так только то, что между ними на самом деле будет захвачен (и Я не использую особенно хорошее регулярное выражение для писем, но это должно быть достаточно легко настроить).

Вы должны иметь возможность использовать приведенное выше значение с preg_replace_all() и ссылкой .

3

Это должно сделать это ...

<?php 
$string = '<[email protected]>'; 
echo preg_replace('~<\s*(.*[email protected]*?)\s*>~', '$1', $string); 
?> 

Поиск «больше чем», необязательных пробелов, каждый символ до первого @, то каждый символа до первого «меньше», с дополнительными завершающим пробельные.

0

У меня есть (много) электронных писем, которые содержат адреса, как < [email protected]> внутри тела.

Я хочу, чтобы удалить < и> от тела электронной почты, но только там, где есть и @ внутри (есть HTML-теги в теле тоже, что должно пребывания).

Простой. Эта концепция известна как нарезка.

$email = '<[email protected]>'; 


if(strpos($email, '@')) { 

    $new_email = substr($email, 1, strlen($email)-2); 
    echo $new_email; 
} 

Выходы: [email protected]

Смежные вопросы