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