Heim  >  Artikel  >  Backend-Entwicklung  >  关于preg_replace()函数反向引用用法的有关问题

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

WBOY
WBOYOriginal
2016-06-13 12:26:301259Durchsuche

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

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


如上面所示返向引用${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(<br />    array('ID'=>'1','Name'=>'小王'),<br />    array('ID'=>'2','Name'=>'小李')<br />    );<br /> <br />$strA = 'AA Name CC DD';<br />$strB = '/\s+(\w+)\s+/ie';<br />$Html = preg_replace($strB, '$Array1[0]["$1"]', $strA);<br />echo $Html;<br />

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

Stellungnahme:
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