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