preg_replace 替换值有子表达式值加数值问题

WBOY
Freigeben: 2016-06-23 13:59:50
Original
1131 Leute haben es durchsucht

如下面简单的替换:
$ih=100;
$aa='a123b';
$aa=preg_replace('/^(a)123(b)$/i','$1'.$ih.'$2',$aa);
print_r($aa);
怎么结果就是不对,$ih变为字母就正常,数字的话会丢第一位和$1。在$1随便加个字母也正常,不会是我电脑问题吧?


回复讨论(解决方案)

$aa=preg_replace('/^(a)123(b)$/ie','"$1".$ih."$2"',$aa);
Nach dem Login kopieren

preg_replace('/^(a)*(b)$/i','$1'.$ih.'$2',$aa);

$ih=500;$aa='a123b';$aa=preg_replace('/^(a)123(b)$/i','${1}'.$ih.'${2}',$aa);print_r($aa);
Nach dem Login kopieren

'$1'.$ih.'$2'
Nach dem Login kopieren

相当于
'$1'.‘100’.'$2'$1100$2
Nach dem Login kopieren

修改规则 '$1'.$ih.'$2'
实际传递给 preg_replace 的是 ‘$1100$2'
于是 $1 和 $11 就产生了歧义
所以需要人工将其区别开来 ‘${1}100$2'
按你的格式就是 '${1}'.$ih.'$2'
注意:不能使用双引号

都回答的很好,可惜分不多。早知道早点来这问了,郁闷了一整天。

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage