支持中文变量的smarty模板引擎(修改版):程序与模板全部使用utf8编码的情况下,可以支持中文变量名

程序与模板全部使用utf8编码的情况下,可以支持中文变量名

smarty 基于smarty 3.0.6修改,只能用于utf-8编码的php程序+utf-8编码的模板(两者必须是utf-8!)

感谢maquan 的辛勤不懈的努力付出。

详细讨论过程,请参考这里 http://topic.csdn.net/u/20110304/09/6656b521-6d7b-4188-a9ca-316aafcd65b6.html

原smarty代码修改处:

3.0.6,在 Smarty/sysplugins/smarty_internal_templatelexer.php:455 附近有如下的内容:
function yylex2()
{

$yy_global_pattern = “…|^(0[xX][0-9a-fA-F]+)|^([0-9]*[a-zA-Z_]\\w*)|^(\\d+)|^(\\s+)|^(.)/u”;

改成下面的样子即可:

function yylex2()
{

$yy_global_pattern = “…|^(0[xX][0-9a-fA-F]+)|^([0-9]*[a-zA-Z_\\pL][\\w\\pL]*)|^(\\d+)|^(\\s+)|^(.)/u”;

可以直接下载本文附件,如不放心,请按上述说明自行修改。




coded by nessus
发表评论?

2 条评论。

  1. 甜言蜜語

    你好,我有一個問題,找不出原因。

    我在3.0.7 RC的smarty照這個方法實行,在localhost使用win7+appserv是可以支持中文變量的;但是在我所租用的VPS上,卻無法支持中文變量。

    但是不管是localhost或是遠端vps,都支持php的中文變量,僅smarty無法支持。

    不曉得是什麼原因想請教您?

    遠端VPS的INFO: http://moelove.net/info.html
    本機的INFO: http://moelove.net/localhost.html

    feng 回复:

    @甜言蜜語, 不知你是否确认过模板文件与php程序都要使用utf-8编码,或者直接下载我提供的“基于smarty 3.0.6修改”版本试试。这个代码在godaddy的vps(centos linux)测试通过,可以支持中文变量名的。如果还是不行,我也实在无能为力,可以在文中csdn那个帖子里回复问问maquan

发表评论