分享 / 0 / 4 / 创建于 4年前
public function setBodyAttribute($body) { $this->attributes[‘body’] = preg_replace(‘/@([\w-]+)/‘,’$0‘,$body); }有没有大神指导下,这里的$1 ,$0,什么鬼?
<?php $string = 'google 123, 456'; $pattern = '/(\w+) (\d+), (\d+)/i'; $replacement = '$0 - $1 - $2 - $3'; echo preg_replace($pattern, $replacement, $string); ?>
输出:
google 123, 456 - google - 123 - 456
每个这样的引用将被匹配到的第n个捕获子组捕获到的文本替换。 n可以是0-99,\0和$0代表完整的模式匹配文本,也就是整串字符串
@sargerase 这里的 $0 - $1 - $2 - $3,可以理解为该函数使用正则表达式匹配所得的结果。
你好@hello-world,吃饭了吗?
$0 => @hello-world
$1 => hello-world
$1, $2… $n 在正则表达式中,replaces 是对括号中包含的匹配项的引用。 $0将是整个匹配,$1是第一个带括号的捕获,$2是第二个带括号的捕获,这样依此类推。
$1
$2
$n
$0
<?php function replace(string $str) { // str => 18596854156@163.com return preg_replace('/(.*)@(\d+).([a-z]+)/', '$1-$2-$3', $str); // output => 18596954156-163-com }
针对上面的例子:
$str
(.*)
(\d+)
([a-z]+)
具体参阅 docs,特别是该函数的 replace 参数
我要举报该,理由是:
输出:
每个这样的引用将被匹配到的第n个捕获子组捕获到的文本替换。 n可以是0-99,\0和$0代表完整的模式匹配文本,也就是整串字符串
@sargerase 这里的 $0 - $1 - $2 - $3,可以理解为该函数使用正则表达式匹配所得的结果。
你好@hello-world,吃饭了吗?$0 => @hello-world$1 => hello-world$1,$2…$n在正则表达式中,replaces 是对括号中包含的匹配项的引用。$0将是整个匹配,$1是第一个带括号的捕获,$2是第二个带括号的捕获,这样依此类推。针对上面的例子:
$str(.*)(\d+)([a-z]+)具体参阅 docs,特别是该函数的 replace 参数