首頁  >  問答  >  主體

()中的匹配項會放到數組中,問題是$1和\\1有什麼不同?

ubb文字編輯,preg_replace($pattern,$replace,$stirng);

争渡争渡2538 天前1708

全部回覆(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
  • 取消回覆