PHP - 在字符串中搜索电话号码和电子邮件

时间:2017-05-08 19:39:13

标签: php regex

我正在尝试编写一个小脚本来查明给定字符串是否包含电话号码和/或电子邮件地址。

这是我到目前为止所拥有的:

$stringOne = "My name is John and my phone number is 040-3627781";
// would be found

$stringTwo "My name is Becky and my phone number is 0 4 0 3 2 0 5 4 3";
// would not be found

电子邮件的部分工作正常,但我愿意改进。 随着电话号码我有一些问题。首先,将给予该功能的字符串很可能包含德国电话号码。问题是所有不同的格式。它可能是这样的 030 - 1234567或030/1234567或02964-723689或01718290918 等等。所以基本上我几乎不可能找出将使用的组合。所以我的想法是,或许最好找到一个至少三位数的组合,这是一个好主意。例如:

http://X.X.X.X:8081/index.ios.bundle?platform=ios

我遇到的问题是我不知道如何找到这样的组合。即使经过近一个小时的网络搜索,我找不到解决方案。 有没有人建议如何处理这个问题? 谢谢!

1 个答案:

答案 0 :(得分:2)

您可以使用

<h2>
  <a id="a" href=''>:hover, please</a>
</h2>

a demo on regex101.com

<小时/> 长版:

\b\d[- /\d]*\d\b

<小时/> 在\b\d # this requires a "word boundary" and a digit [- /\d]* # one of the characters in the class \d\b # a digit and another boundary.

PHP

问题是,你可能会得到很多误报,所以当这些匹配被清理,规范化然后针对数据库进行测试时,它肯定会提高你的准确性。

<小时/> 至于您的电子邮件问题,我经常使用:

<?php
$regex = '~\b\d[- /\d]*\d\b~';

preg_match_all($regex, $your_string_here, $numbers);
print_r($numbers);
?>

有几十种不同的有效电子邮件,唯一可以证明某人背后是真人的方法是发送带有链接的电子邮件(即使这可以自动化)。