php正则表达式 - 替换“\ $ {1}”

时间:2010-03-23 11:24:22

标签: php regex

找到了这个正则表达式:

insert " " every 10 characters:  
$text =  preg_replace("|(.{10})|u", "\${1}"." ", $text);

请您解释\${1}的含义。为什么使用\和大括号是什么意思?

2 个答案:

答案 0 :(得分:4)

引用 preg_replace 手册页的部分内容:

  

replacement可能包含引用   表格\\n $n,后者   形式是首选的

显然,你是第二种情况:$n


后来:

  

使用替代品时   反向引用的模式   紧接着是另一个号码   (即:放置一个字面数字   紧接着匹配的模式之后),   你不能使用熟悉的\\1   您的反向引用的表示法。   
例如,\\11会混淆   preg_replace()因为它不知道   是否需要\\1反向引用   然后是文字1\\11   反向引用后面没有任何内容。   

在这种情况下解决方案是   使用\${1}1 。这创造了一个孤立的   $1反向引用,将1保留为   文字。

在这里,$1之后你没有任何东西 - 但我认为使用\${1}符号不会有任何影响:我发现它使代码更易于阅读,拥有{} {1}};它确保你不会忘记在需要的那天添加它们。

答案 1 :(得分:1)

第一个花括号负责计算字符。 .{10}表示:任何字符的10倍 \ $ {1}代表第一对parantheses中匹配的所有内容。 所以,用它来解释:“用相同的10个字符(.{10})加上一个空格替换十个字符(\${1})。