首页 > 后端开发 > php教程 > 关于preg_replace()函数反向引用用法的问题。

关于preg_replace()函数反向引用用法的问题。

WBOY
发布: 2016-06-20 12:45:42
原创
1115 人浏览过

$Array1=array(	array('ID'=>'1','Name'=>'小王'),	array('ID'=>'2','Name'=>'小李')	);$strA='AA Name CC DD';$strB='/\s+(\w+)\s+/i';$Html=preg_replace($strB, $Array1[0][‘${2}’], $strA);echo $Html;
登录后复制


如上面所示返向引用${2}如下这么写是没问题的:
$Html=preg_replace($strB, ‘${2}’, $strA);
登录后复制


但是,如果我想把这个引用过来的字符串当作数组的键名,如$array['${1}']!。就会报错。如何解决这个问题呢?
Notice: Undefined index: in F:\Web\wwwroot\CMS\TemplateClass.php on line 236


回复讨论(解决方案)

对于 php5.5 一下,可以

$Array1 = array(    array('ID'=>'1','Name'=>'小王'),    array('ID'=>'2','Name'=>'小李')    ); $strA = 'AA Name CC DD';$strB = '/\s+(\w+)\s+/ie';$Html = preg_replace($strB, '$Array1[0]["$1"]', $strA);echo $Html;
登录后复制

对于 php5.3及以上,可以
$Array1 = array(    array('ID'=>'1','Name'=>'小王'),    array('ID'=>'2','Name'=>'小李')    ); $strA = 'AA Name CC DD';$strB = '/\s+(\w+)\s+/i';$Html = preg_replace_callback($strB, function($m) use ($Array1) { return $Array1[0][$m[1]];}, $strA);echo $Html;
登录后复制

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板