首页  >  问答  >  正文

()中的匹配项将放到数组中,问题是$1和\\1有什么不同?

ubb文本编辑,preg_replace($pattern,$replace,$stirng);

争渡争渡2538 天前1705

全部回复(2)我来回复

  •  

     2018-01-29 15:54:48

    我看手册说\1和$1都一样的。

    手册原话:replacement中可以包含后向引用\n或$n,语法上首选后者每个这样的引用将被匹配到的第n个捕获子组捕获到的文本替换。 n可以是0-99,\0和$0代表完整的模式匹配文本。 捕获子组的序号计数方式为:代表捕获子组的左括号从左到右, 从1开始数。如果要在replacement 中使用反斜线,必须使用4个("\\",译注:因为这首先是php的字符串,经过转义后,是两个,再经过正则表达式引擎后才被认为是一个原文反斜线)。 

    回复
    0
  •  

    如果说区别的话就是:preg_replace() 不知道我们想表达的是\11还是\1 1(第二个1是字符串1)。所以用${1}1可以让preg_replace()知道第一个1是反向引用,第二个1只是紧跟着反向引用后面原文的1。

      · 2018-01-29 16:00:36
  • 取消回复