>백엔드 개발 >PHP 튜토리얼 >preg_replace 替换值有子表达式值加数值问题

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

WBOY
WBOY원래의
2016-06-23 13:59:501189검색

如下面简单的替换:
$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'
注意:不能使用双引号

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

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.