php中preg_replace函数的正则问题

原文是<?php$var['a'];?>替换为<?php$ehs->get(var)->value['a'];?>或者是<?php$var['a']['b'];?>替换为... 原文是 <?php $var['a']; ?>
替换为 <?php $ehs->get(var)->value['a']; ?>
或者是 <?php $var['a']['b']; ?>
替换为 <?php $ehs->get(var)->value['a']['b']; ?>
依次类推,
求正则高手指教.使用一次preg_replace替换是否可以
preg_replace如果替换一次不可以,那么替换两次或多次,又该怎么做?
qq:306180670 谢谢啦
展开
 我来答
windblast
2012-05-29 · 知道合伙人软件行家
windblast
知道合伙人软件行家
采纳数:5633 获赞数:13624
毕业于空军第一航空学院电子专业,1991年开始接触电脑,从事多年计算机编程,具有较丰富的经验。

向TA提问 私信TA
展开全部
试编写代码如下:

<?php
$s1 = "<?php \$var['a']; ?>";
$s2 = "<?php \$var['a']['bbb']; ?>";

$pa = '/<\?php +\$([_a-zA-Z0-9]+)(\[\'[a-zA-Z0-9]+\'\]+)(\[\'[a-zA-Z0-9]+\'\])*; ?\?>/si';

echo preg_replace_callback($pa, 'doReplace', $s2);

function doReplace($matches)
{
$resut = '<?php $ehs->get(' .$matches[1]. ')->value';
for($i=2;$i<count($matches);$i++)
{
$resut .= $matches[$i];
}
return $resut;
}

?>

//简便代码
<?php
$s1 = "<?php \$var['a']; ?>";
$s2 = "<?php \$var['a']['bbb']['cccc']; ?>";

$pa = '/<\?php +\$([_a-zA-Z0-9]+)([\'\S\']+); ?\?>/si';

echo preg_replace_callback($pa, 'doReplace', $s2);

function doReplace($matches)
{
return '<?php $ehs->get(' .$matches[1]. ')->value'. $matches[2];
}

?>
追问
$s1 = "".""."".""."";
得到的结果是这样的.,
get(va)->valuer
get(var)->value['a']
get(var)->value['a']['bbb']['cccc']

"get(va)->valuer" 这部分不对, r怎么跑后面去了
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式