PHP preg_替换$1,无空格

PHP preg_替换$1,无空格,php,preg-replace,space,Php,Preg Replace,Space,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] 但我

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]
当我使用preg_replace时,使用$1和$replace_id之间的空格:

   $new_movies = preg_replace('#(,|\[)'.$search.'(,|\])#Uis','$1 '.$replace_id.'$2',$movies);
它工作完美,但我需要这个里面没有空间

你知道吗


谢谢

来自文档:

在使用替换模式时,如果一个反向引用后面紧跟着另一个数字(即:在匹配的模式后面紧跟一个文字数字),则不能使用熟悉的\1符号来表示反向引用\例如,11会混淆preg_replace(),因为它不知道是\1 backreference后跟literal 1,还是\11 backreference后跟nothing。在这种情况下,解决方案是使用\${1}1。这将创建一个独立的$1反向引用,将1保留为文本


因此,我会使用
'${1}.$replace\u id

您的第二个代码与第一个代码相同,但我是否正确地认为您正在尝试用
$15000
这样的模式进行替换,其中
$1
是标记,
5000
是文本文字?哦,对不起,我现在添加了空格;)是的,这就是我的意思。好吧,那样的话,我的回答应该对你有帮助。谢谢!实际上它不是“${1}”。$replace\u id,而是“${1}”。$replace\u id(不带斜杠)@Wikunia-ah-ok。我在想。不幸的是,文档很少明确说明它使用的是
'
还是
'
引号…总之,修复了。