如何确定是否已发布电话号码?

时间:2012-08-19 11:33:43

标签: php

在我的一个网站上,我遇到一个问题,即有太多新用户没有阅读规则并公开发布他们的电话号码,这违反了规则。

所以为了结束这个,我想检查一下是否在提交电话号码之前提交了电话号码。确定电话号码是否出现在字符串中的最佳和最有效的方法是什么?

以下是我的思考过程:

1)电话号码至少为10位数。

2)有时,用户会在其电话号码中使用()-和空格。

因此,要检查是否已发布电话号码,似乎我必须获取帖子的字符串,从上面的2)中删除所有字符,然后搜索任何出现的10个字符连续数字或更多。

当然,这可以被规避,但绝大多数新用户并没有试图规避规则,他们只是发布他们的电话号码完全不遵守规则,我不知道如何阻止他们所以我不必浪费太多时间来管理网站。

我如何在PHP中执行上述操作?或者有更好的方法吗?

修改:为了澄清,我的网站已经有一个“报告帖子”按钮,供用户报告违规帖子,这就是我调整网站的方式,但我的审核时间的90%是花了不得不编辑电话号码并警告那些用户不要这样做。我希望“抢先”解决问题,以便在问题发生之前将其捕获,并警告用户有关规则。当然,用户可以绕过它,但后来我会禁止他们,因为他们被特别警告不要这样做,我无法理解许多用户故意忽略规则只是为了被禁止。因此,我的解决方案可以为我节省很多时间,而且缺点很少。我无法理解我网站上输入的10个或更多连续数字不是电话号码的情况,所以我并不担心误报。

3 个答案:

答案 0 :(得分:2)

  

什么是最好的

手动检查帖子(我猜这不是一个有效的选项,但它是最好的)。

  

最有效的方式

不要这样做。

  

当然,这可以被规避,

错误。新用户和当前用户都被规避。

很抱歉,这不是你问题的真正答案,但这是唯一正确的答案imho。


然而,您可以在帖子上运行一些正则表达式模式,以检查其中是否存在phonenumbers,但这样做有两个缺点:

  1. 用户将绕过这个,你将无法全部陷阱
  2. 您可能会得到误报,这对用户来说非常非常令人讨厌。
  3. 如果你真的想要走这条路线,那么最好的行动方式是获得一大堆带有phonenumbers的帖子,并列出你在其中找到的所有可能的phonenumbers格式。获得该列表后,您可以根据此列表编写正则表达式模式。

答案 1 :(得分:1)

你可以删除你在2中提到的所有字符,然后使用像这里的正则表达式:https://stackoverflow.com/a/3764902/1130734来查找这样的数字

$string = preg_replace('/[() -]+/','',$string);
$found = preg_match("/\+?[0-9][0-9()-\s+]{4,20}[0-9]/",$string);
if ($found==1){
    //tell user they may be breaking the rules and face a ban
}

您可能想要更改正则表达式,以便它只匹配以零或加号开头的数字(不确定这是否正确...)/[0\+][0-9()-\s+]{4,20}[0-9]/

答案 2 :(得分:0)

最好的办法是使用正则表达式搜索常用的电话号码格式。这可以通过经验不断审查和改进

然而,人类是一个狡猾的生物,所以你永远不会消灭它。

修改

当然你可以使用PHP。

只需添加到代码中,即可对您网站上的帖子进行一些验证 - 即执行检查以确保帖子符合规则。