preg_replace("/([&?]uid=)[^?&]*/",'$1173','http://localhost/mobile/index.php?c=wish&uid=181')
//输出:http://localhost/mobile/index.php?c=wish73
如上面$replacement ($1173)表示的,php以为我要把$11加上73,但其实我是想让 $1加上173,请问怎样改才能符合我的预期?
刚刚在写问题的时候突然想到把
$replacement改成$01说不定可以,没想到真可以了,现在是这样'$01173'
另外,同样的$replacement($1173)放到js里表现的结果却是我预期的,那js里想要$11加上73怎么办?
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
试试
$01173?JS只是比较智能一点,它发现你的正则里面没有11个分组,所以会把
$1173拆分为$1和173两个部分。但是当分组数量达到11个以上时它也就会以能够匹配到的最大的分组来替换了,比如:要想在上面的第二个例子里替换第一个分组,可以用
$01173,由于分组最大只能到99,而01已经满了2位数,所以JS不会再去尝试检查第三位数。你可以在PHP里试试这种方法,我没测试,不知道可不可行。至于你说的,想让JS在不足11个分组的时候匹配
$11应该是做不到的。