【发布时间】:2014-01-22 02:44:02
【问题描述】:
您好,我正在创建一个移动短信应用程序
用户可以通过短信在他/她的手机中接收消息。
我的数据库中有 5000 条消息。但有些消息有联系电话
请参阅以下消息:
Success Is Not Permanent & Failure Is Not Final. So,
Never Stop Working After Success & Never Stop Trying After Failure...
1234567890
或
Success Is Not Permanent & Failure Is Not Final.
01234567890
So, Never Stop Working After Success & Never Stop Trying After Failure...
或
+911234567890 Success Is Not Permanent & Failure Is Not Final. So,
Never Stop Working After Success & Never Stop Trying After Failure...
我想remove或get以上3种格式的联系电话123456789001234567890+911234567890
【问题讨论】:
-
$mystring = preg_replace('/\+?\d{9,11}/','',$mystring); -
@MarkBaker 注释中的代码似乎在您提供的第三个示例中留下了最后的 0。它还会删除任何 + 符号。因此,如果一条消息说“啤酒 + 汉堡就是幸福”,您将失去 +。正如下面 Marcins 的回答所建议的那样,这是问题的最后一行。只需按...分解字符串并保留第一个数组块,然后更新字段。
-
是的,我数错了号码的位数;但它当然不应该删除
+,除非后面跟着一个数字 -
@TheHumbleRat:这应该可以解决这个问题:
/(?:\+\d)?\d{9,12}/。查看演示:regex101.com/r/vP9gB4