如何检测文本中的电话号码(并替换它们)?

Fra*_*sco 11 php string

我知道可以用坏词(检查预设单词数组)但如何检测长文本中的电话号码?我正在为一个客户建立一个PHP网站,该客户需要避免使用描述字段来设置他们的手机号码.(参见craigslist等...)

除了他需要一些节制,但我想知道是否有办法阻止至少明显的喜欢nnn-nnn-nnnn,而不是要求阻止其他奇怪的写作方式HeiGHT*/four*/nine等...

Tim*_*ain 6

欢迎来到正则表达式的世界.你基本上想要使用preg_replace来查找(某些模式)并用字符串替换.

这是让你开始的事情:

$text = preg_replace('/\+?[0-9][0-9()\-\s+]{4,20}[0-9]/', '[blocked]', $text);
Run Code Online (Sandbox Code Playgroud)

这样找:

加号(可选),后跟数字,后跟4-20个数字,括号,短划线或空格,后跟数字

并替换为字符串[blocked].

这抓住了我能想到的所有明显的组合:

012345 123123
+44 1234 123123
+44(0)123 123123
0123456789
Placename 123456 (although this one will leave 'Placename')
Run Code Online (Sandbox Code Playgroud)

但是它也会删除6个以上的连续数,这可能是不可取的!