Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php preg_replace可从字符串中删除电话号码_Php_Regex_Preg Replace_Preg Match - Fatal编程技术网

Php preg_replace可从字符串中删除电话号码

Php preg_replace可从字符串中删除电话号码,php,regex,preg-replace,preg-match,Php,Regex,Preg Replace,Preg Match,我有一个网站,我需要阻止用户通过邮件向其他用户发送联系电话/电子邮件 我在下面的中成功地使用了它,但它没有达到我想要的效果,即。。在匹配所有场景时 public function clean_email($text){ $pattern = '/\w+[\w-\.]*(\@\w+((-\w+)|(\w*))\.[a-z]{2,3})/i'; preg_match($pattern, $text, $matches); return (isset($matches[1]))

我有一个网站,我需要阻止用户通过邮件向其他用户发送联系电话/电子邮件

我在下面的中成功地使用了它,但它没有达到我想要的效果,即。。在匹配所有场景时

public function clean_email($text){
    $pattern = '/\w+[\w-\.]*(\@\w+((-\w+)|(\w*))\.[a-z]{2,3})/i';
    preg_match($pattern, $text, $matches);
    return (isset($matches[1])) ? str_replace($matches[1], 
            "[********]", $text) : $text;
}

public function clean_phone($text){
    $pattern = '/(\d{3}|\d{4})|(\d{3,+})/i';
    preg_match($pattern, $text, $matches);
    return (isset($matches[1])) ? str_replace($matches[1], 
               "[********]", $text) : $text;
}
我正在考虑使用preg_replace在邮件文本中识别电话号码,但我知道电话号码可以用以下多种方式书写

0433 765 888
0433765888
+61433765888
+610433765888
+61 02 9876 0987
+61 0298760987
+610298760987
是否可以编写一个单独的preg_replace模式来识别它们

也需要对电子邮件地址执行同样的操作,我还希望在我们在电子邮件文本中找到的每个电子邮件地址中都使用[Censered]替换它们。 i、 e


祝你好运。

我是Firefox广泛使用的单位转换扩展的作者,因此我对人们在非对抗性环境下如何用人类语言书写信息有很多经验。也就是说,当他们没有受到积极试图审查他们的对手的阻碍时。我告诉你,即使在这种情况下,正则表达式也不可能总是找出它们想要表达的意思

我需要长时间的介绍才能给出这个答案:不,不可能。你能做的就是参加军备竞赛。也就是说,现在实现最简单的regexp,然后持续监控用户的通信,并根据他们提出的任何建议改进regexp,以绕过您

但是,请注意,您永远不会找到满意的解决方案,因为很快您就会陷入恼人的误报中。比如“我在亚马逊网站上找到了这双鞋”。您的代码会将其更改为“我发现了这些[审查]”。电话号码更糟糕,因为人们可以将选定的数字写成文字(“043three37655…”),所以你最终不得不审查所有提及的任何号码


这本质上是一个无法通过技术手段解决的社会问题。如果我是你,我会做的是实现几个明显的regexp(从而捕获99%的坦率用户),并用社交规则强制执行规则。也就是说,通过驱逐试图规避EULA的人来强制执行EULA。

解决这一问题的方法总是有的。无论你试图阻止它,用户都会使用新的技巧,将0替换为“O字母”,将1替换为“小L”,等等。有成千上万种可能的情况。我很确定不可能让它对所有人都起作用。
打47 double-O 617给我打电话。使用带前缀的国家/地区代码381。
请致电@Wh1T3h4Ck5以获得愉快时光:-)
mlanXXX@hotmail.com
mlanXXX AT hotmail.com