找到了这个正则表达式:
insert " " every 10 characters:
$text = preg_replace("|(.{10})|u", "\${1}"." ", $text);
请您解释\${1}
的含义。为什么使用\
和大括号是什么意思?
答案 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}
)。