标签归档:正则表达式

正则替换时的一个潜在问题,几乎折服所有新老手!

通常正则替换(preg_replace)会用 $1 或 \1 来作反向引用,如下:

‘$1′ . $string . ‘$2′ 或 ‘\1′ . $string . ‘\2′ 原意是在它们之间插入 $string

这本身也没什么问题,但当 $string 的值以数字开头时?比如 string = “4fabc” 那么,此时的 $1 直接连接了 string 将被正则引擎当作 $14 而不是 $1 了,所以不仅 $1 消失了,连 string 中的 ‘4’ 也被吃掉了~~

解决办法就是改用 ${1}, ${2} ….

这是实战过程碰到的问题,分享给大家了!