弱弱的第三问: 很简单的正则问题

mingkin 2009-05-28 04:59:12
弱弱的第三问: 很简单的正则问题

是这样的, 要匹配的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];
...全文
107 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuzuning 2009-05-31
  • 打赏
  • 举报
回复
echo preg_replace('#^\#DT([0-9])$#e', "\$array['one']['\\1']", $string);

这样是不是好些?
echo $array['one'][preg_replace('#^\#DT([0-9])$#e', '\\1', $string)];
SysTem128 2009-05-31
  • 打赏
  • 举报
回复

<?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);
?>


另提示一下尽量不要使用关键词做变量名。
以避免预想不到的问题。
mingkin 2009-05-28
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 zyh1290163_com 的回复:]
PHP code<?php>$string='#DT1';$array['one']=array('1'=>'a','2'=>'b');echopreg_replace('#^\#DT([0-9])$#',$array['one']['1'],$string);?>
好像这样子也行的
[/Quote]
如果 string 变了 #DT2 / #DT3 / #DT4 ......

那便没有了 key 随 string 改变的目的
zyh1290163_com 2009-05-28
  • 打赏
  • 举报
回复

<?php>
$string = '#DT1';
$array['one'] = array('1' => 'a', '2' => 'b');
echo preg_replace('#^\#DT([0-9])$#', $array['one']['1'], $string);
?>

好像这样子也行的
mingkin 2009-05-28
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 SysTem128 的回复:]
PHP code<?php$string='#DT1';preg_match('/^\#DT(?P<one>\d)$/',$string,$mats);var_export($mats);?>

PHP codearray(0=>'#DT1','one'=>'1',1=>'1',)
[/Quote]
不, 我的意思是想在preg_replace一句中完成转换

preg_replace('#^\#DT([0-9])$#', $array['one']['\\1'], $string);


怎样修改这句句子才能达到预期中的效果?
SysTem128 2009-05-28
  • 打赏
  • 举报
回复

<?php
$string = '#DT1';
preg_match('/^\#DT(?P<one>\d)$/',$string , $mats);
var_export($mats);
?>



array (
0 => '#DT1',
'one' => '1',
1 => '1',
)

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧