PHP从字符串中删除电话号码和电子邮件

时间:2013-11-14 17:32:43

标签: php string

我正在寻找一种从字符串中删除任何电话号码和电子邮件地址的方法。

是否有人已经意识到这种功能?

你们都有什么建议? EREG?

由于 问候, 提多书。

PS:任何tuto都受到欢迎:)

    $chaine = "Here is my e-Mail contact@domain.eu and my phone (works) 0606060606 (not works) 06.06.06.06.06";
// Phone Number :
$chaine = preg_replace('/\+?[0-9][0-9()-\s+]{4,20}[0-9]/', '[removed]', $chaine);

// E-mail adress :
$pattern = "/[^@\s]*@[^@\s]*\.[^@\s]*/";
$replacement = "[removed]";
preg_replace($pattern, $replacement, $chaine);

echo $chaine;

3 个答案:

答案 0 :(得分:3)

这是一个基本的实现。电子邮件的正则表达式来自regexlib。一个phpfiddle可以是tested here

function removeEmailAndPhoneFromString($string) {
    // remove email
    $string = preg_replace('/([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)/','',$string);

    // remove phone
    $string = preg_replace('/([0-9]+[\- ]?[0-9]+)/','',$string);

    return $string;
}

echo removeEmailAndPhoneFromString('Lorem ipsum foo@bar.com dolor sit amet, 555-123 555 consectetur adipiscing elit.');

电话的正则表达式只是被抛到一起所以YMMV。

答案 1 :(得分:0)

尝试使用preg_replace

代码想要

    $string = 'your string';

    $patterns = array();
    $patterns[0] = '/([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)/';
    $patterns[1] = '/([0-9]+[\- ]?[0-9]+)/';

    $replacements = array();
    $replacements[0] = '';
    $replacements[1] = '';

    //should use just one call of preg_replace for perfomance issues
    $string = preg_replace($patterns, $replacements, $string);

同时阅读

有关验证电话号码和电子邮件地址的正则表达式的问题。

。在phpfiddle上的示例

答案 2 :(得分:0)

如果要从“消息”或“聊天”中以PHP或任何其他语言隐藏电子邮件和电话号码。您需要使用正则表达式,并在w3school上了解正则表达式。

我为您提供了一个简单而完整的解决方案。

<?php       
    $regex_email = '/[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})/';
    $regex_phone = "/[0-9]{5,}|\d[ 0-9 ]{1,}\d|\sone|\stwo|\sthree|\sfour|\sfive|\ssix|\sseven|\seight|\snine|\sten/i";

    
    $str = " Hello My Email soroutlove1996@gmail.com AND Phone No. is +919992799999 and +91 9992799999, or 9 9 9 2 7 9 9 9 9 9 and Nine Nine";;
    $str = preg_replace($regex_email,'(email hidden)',$str); // extract email
    $str = preg_replace($regex_phone,'(phone hidden)',$str); // extract phone
    
    echo $str;

输出:您好,我的电子邮件(隐藏电子邮件)且电话号码为+(电话 隐藏)和+(电话隐藏),或(电话隐藏)和(电话隐藏)(电话 隐藏)