ecShop的preg_replace改成preg_replace_callback

$pattern='/<!--\s#BeginLibraryItem\s\"\/(.*?)\"\s-->.*?<!--\s#EndLibraryItem\s-->/se'... $pattern = '/<!--\s#BeginLibraryItem\s\"\/(.*?)\"\s-->.*?<!--\s#EndLibraryItem\s-->/se';
$replacement = "'{include file='.strtolower('\\1'). '}'";
$source = preg_replace($pattern, $replacement, $source);
这一句怎么改成preg_replace_callback或者其他解决办法。急急急。
展开
 我来答
  • 你的回答被采纳后将获得:
  • 系统奖励15(财富值+成长值)+难题奖励10(财富值+成长值)+提问者悬赏50(财富值+成长值)
851468308qq
2014-09-25 · 超过100用户采纳过TA的回答
知道小有建树答主
回答量:133
采纳率:0%
帮助的人:134万
展开全部
替换成preg_replace_callback的语法如下,注意其中的/e修饰符
<?php
function getFileString($matches) {
return '{include file=' . strtolower($matches[1]) . '}';
}
// for test
$source = '<!-- #BeginLibraryItem "/library/recommend_promotion.lbi" --><!-- #EndLibraryItem -->';
//$pattern = '/<!--\s#BeginLibraryItem\s\"\/(.*?)\"\s-->.*?<!--\s#EndLibraryItem\s-->/se';
$pattern = '/<!--\s#BeginLibraryItem\s\"\/(.*?)\"\s-->.*?<!--\s#EndLibraryItem\s-->/s';
$replacement = '"{include file=' . strtolower('\\1') . '}"';
//$source = preg_replace($pattern, $replacement, $source);
$source = preg_replace_callback($pattern, "getFileString", $source);
print $source;
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ecmoban模板堂
2014-09-24 · TA获得超过770个赞
知道大有可为答主
回答量:2259
采纳率:66%
帮助的人:882万
展开全部
这个可以问下ecshop的开发人员看看
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式