程序与模板全部使用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”;
…
可以直接下载本文附件,如不放心,请按上述说明自行修改。
你好,我有一個問題,找不出原因。
我在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
@甜言蜜語, 不知你是否确认过模板文件与php程序都要使用utf-8编码,或者直接下载我提供的“基于smarty 3.0.6修改”版本试试。这个代码在godaddy的vps(centos linux)测试通过,可以支持中文变量名的。如果还是不行,我也实在无能为力,可以在文中csdn那个帖子里回复问问maquan