弱弱的第三问: 很简单的正则问题是这样的, 要匹配的string是这样#^\#DT([0-9])$#\\1便是那个匹配数字我想将那个匹配的数字作为array的key$string = '#DT1';
$array['one'] = array('1' => 'a', '2' => 'b');
echo preg_replace('#^\#DT([0-9])$#', $array['one']['\\1'], $string);为什么我不能得到预期中的结果 -> a难道一定要这样:$key = preg_replace('#^\#DT([0-9])$#', '\\1', $string);
echo $array['one'][$key];
$array['one'] = array('1' => 'a', '2' => 'b');
echo preg_replace('#^\#DT([0-9])$#', $array['one']['\\1'], $string);为什么我不能得到预期中的结果 -> a难道一定要这样:$key = preg_replace('#^\#DT([0-9])$#', '\\1', $string);
echo $array['one'][$key];
<?php
$string = '#DT1';
preg_match('/^\#DT(?P<one>\d)$/',$string , $mats);
var_export($mats);
?>array (
0 => '#DT1',
'one' => '1',
1 => '1',
)
<?php>
$string = '#DT1';
$array['one'] = array('1' => 'a', '2' => 'b');
echo preg_replace('#^\#DT([0-9])$#', $array['one']['1'], $string);
?>好像这样子也行的
<?php
$str = '#DT1';
$arr['one'] = array('1' => 'a', '2' => 'b');
echo preg_replace('/^#DT([0-9])$/e', "\$arr['one']['\\1']", $str);
$str = '#DT2';
echo preg_replace('/^#DT([0-9])$/e', "\$arr['one']['\\1']", $str);
?>
另提示一下尽量不要使用关键词做变量名。
以避免预想不到的问题。
echo $array['one'][preg_replace('#^\#DT([0-9])$#e', '\\1', $string)];