发现这个表达式:
insert " " every 10 characters:
$text = preg_replace("|(.{10})|u", "\${1}"." ", $text);
可你,请解释一下\${1}
手段。为什么使用\
以及大括号是什么意思?
发现这个表达式:
insert " " every 10 characters:
$text = preg_replace("|(.{10})|u", "\${1}"." ", $text);
可你,请解释一下\${1}
手段。为什么使用\
以及大括号是什么意思?
引用的preg_replace
手册页的一些部分:
replacement
可以含有的 形式\\n
或$n
引用与后者 形式是优选的一个。
你是,显然,在第二种情况:$n
,后来:
当更换 模式在一个逆向引用的 紧接着另一个号码工作 (即:立即在匹配模式之后放置立即数 ), 您不能使用熟悉的
\\1
表示法作为您的反向引用。\\11
,例如,会混淆preg_replace()
,因为它不知道 你是否希望\\1
逆向引用 其次是文字1
,或\\11
逆向引用后面什么都没有。
在这种情况下,解决方案是 使用\${1}1
。这将创建一个单独的反向引用,将1
作为 文字。
在这里,你不必后会是什么$1
任何东西 - 但我想这不会伤害到使用\${1}
符号:我觉得它使代码更易于阅读,有那些{}
;它确保您不会忘记在需要的时候添加它们。
第一个大括号负责计算字符。 .{10}
表示:任意角色的10倍。
\ $ {1}表示在第一对缺口中匹配的所有东西。 因此,用它来解释:“用相同的10个字符(\${1}
)替换空格替换十个字符(.{10}
)
...并且反斜线可防止PHP将'$ {...}'解析为特殊扩展语法虽然这也可以通过使用单引号来防止。 – Boldewyn 2010-03-23 11:38:52