编程语言
首页 > 编程语言> > php-使电话号码加粗的正则表达式-并非始终有效

php-使电话号码加粗的正则表达式-并非始终有效

作者:互联网

我需要在字符串中的任何电话号码周围加上粗体标签.我有以下正则表达式

/(\d[\d\s]*)(?=\s+)/

这适用于:

Call us on 0800 2458 452 now!

但不是这个:

Call us now on 0800 2458 452

因此,如果数字出现在字符串的末尾,则正则表达式将无法正常工作.它输出的字符串会漏掉最后三位的粗体字.

Call us now on <b>0800 2458</b> 452

谁能看到代码有什么问题吗?

$bold_text = preg_replace('/(\d[\d\s]*)(?=\s+)/', '<b>$1</b>', $text);

解决方法:

使用单词边界代替空格

(\d[\d\s]*)(?=\b)

最好在之前添加相同的内容

(?<=\b)(\d[\d\s]*)(?=\b)

不匹配B52

标签:preg-replace,php,regex
来源: https://codeday.me/bug/20191118/2030369.html