免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2000 | 回复: 5
打印 上一主题 下一主题

Smarty模板中background正则替换问题? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-12-28 22:15 |只看该作者 |倒序浏览
<?php
$source = "background=\"images/2.gif\"";

$tmp_dir = "themes/";

$pattern = '/(background\s*=\s*["|\'])(?:\.\/|\.\.\/)?(images\/)/is';
$source = preg_replace($pattern, '\1'.$tmp_dir.'\2', $source);

print $source;
?>
上述代码我测试通过,打印结果如下:
background="themes/images/2.gif"

但我在一个程序中(使用了Smarty模板引擎)使用同样的代码却不能通过,模板中背景是这样设置的:
background="../images/2.gif"

我自己看来看去的好象没错啊,但就是不会替换路径,应该是正则没有匹配的原因,但我的正则实在太差了,改了半天还是搞不定,恳请能得到大家的指点,如何写才能匹配?

论坛徽章:
1
技术图书徽章
日期:2013-12-05 23:25:45
2 [报告]
发表于 2006-12-28 22:23 |只看该作者
那你在替换的之前,输出看看,模板到底是什么内容。

论坛徽章:
0
3 [报告]
发表于 2006-12-28 22:32 |只看该作者
我打开html源代码,就是保持原来的代码:
<td valign="bottom" background="../images/2.gif">

模板中就是这写的,运行后还是这样显示,前面的路径则根本没有替换,但我看正则代码应该是完全匹配了的,不知错在哪儿?

论坛徽章:
1
技术图书徽章
日期:2013-12-05 23:25:45
4 [报告]
发表于 2006-12-28 22:48 |只看该作者
那你在替换的之前,输出看看,模板到底是什么内容。


不要在一切都已经完成之后再看。

论坛徽章:
0
5 [报告]
发表于 2006-12-28 22:51 |只看该作者
怎么做啊,不懂,版主指点一下?

论坛徽章:
0
6 [报告]
发表于 2006-12-29 12:10 |只看该作者
看看在"$smarty->assign"之前是不是做了不该做的事?

<?php
$source = "background=\"images/2.gif\"";

$tmp_dir = "themes/";

$pattern = '/(background\s*=\s*["|\'])(?:\.\/|\.\.\/)?(images\/)/is';
$source = preg_replace($pattern, '\1'.$tmp_dir.'\2', $source);

print $source;//这里是对的

.
.
.

print $source;//看看这里对不对

$smarty->assign(    ?   , $source  );


?>
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP