3

我对 preg_replace 和 $1 + 变量有问题,$1 和变量之间没有空格。

我有这个代码:

$replace_id = 5000;
$search = 1000;
$movies = '[1000,2000,2300,1234]';
$new_movies = preg_replace('#(,|\[)'.$search.'(,|\])#Uis','$1'.$replace_id.'$2',$movies);
echo $new_movies;

输出:

000,2000,2300,1234]

但我想要这个输出:

[5000,2000,2300,1234]

当我在 $1 和 $replace_id 之间使用带有空格的 preg_replace 时:

   $new_movies = preg_replace('#(,|\[)'.$search.'(,|\])#Uis','$1 '.$replace_id.'$2',$movies);

它工作得很好,但我需要这个没有空间!

你有什么主意吗?

谢谢!

4

1 回答 1

6

从文档中:

当使用一个反向引用后跟另一个数字的替换模式时(即:在匹配的模式之后立即放置一个文字数字),您不能使用熟悉的 \1 符号作为反向引用。例如,\11 会混淆 preg_replace(),因为它不知道您是想要 \1 反向引用后跟文字 1,还是要 \11 反向引用后跟什么都没有。在这种情况下,解决方案是使用 \${1}1。这将创建一个孤立的 $1 反向引用,将 1 保留为文字。

http://php.net/manual/en/function.preg-replace.php

所以我会用'${1}'.$replace_id

于 2013-09-08T17:40:04.300 回答