PHP preg_替换$1,无空格
preg_replace和$1+变量在$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] 但我
$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。我在想。不幸的是,文档很少明确说明它使用的是'
还是'
引号…总之,修复了。