PHP 仅从文本中删除电话号码


PHP remove only and only phone numbers from text

这是一个混合了数字和电话号码的示例文本/字符串:

哦,天哪,我今天有1000件事要做,我想读完 《海底两万里》,1954年出版,但嘿,我会在那里见到你 从下午4点到8点,我的手机是374-7657654,或者你可以打电话给我 (374)-334-5674 然后我可以从 16:30 到 19:45 来(欧洲 时间!

如何删除/仅检测电话号码(以任何格式编写,因为我无法预测用户将如何编写它们?

我试过了

('(?+[0-9]{3,15}+['- ]?+[0-9]?+')?+)

但它剥夺了时间或书名/年份等

这是正则表达式:

1?'W*([2-9][0-8][0-9])'W*([2-9][0-9]{2})'W*([0-9]{4})('se?x?t?('d*))?

preg_match("1?'W*([2-9][0-8][0-9])'W*([2-9][0-9]{2})'W*([0-9]{4})('se?x?t?('d*))?", "", $text);

其中$text是您要验证的文本。

所有功劳都归功于 indiv,回答了这个问题

虽然你已经有了答案,但为什么不想出一些更简单的东西:

~([-+()'d]{5,})~
# looks for -+() and digits 
# which need to be there at least 5 consecutive times

在 regex101.com 上查看演示。