Rumah  >  Artikel  >  pembangunan bahagian belakang  >  preg_replace 替换值有子表达式值加数值问题

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

WBOY
WBOYasal
2016-06-23 13:59:501132semak imbas

如下面简单的替换:
$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);

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);

'$1'.$ih.'$2'

相当于
'$1'.‘100’.'$2'$1100$2

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

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

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:动态网页地址如何变成静态Artikel seterusnya:php是好入门难精通吗