程序与模板全部使用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”;
…
可以直接下载本文附件,如不放心,请按上述说明自行修改。
延伸阅读
- PHP在线电子相册程序推荐
- 折腾:vps上php环境升级为php5.5
- JavaScript与PHP之间中文base64码转换源代码
- 腾讯php程序员面试题目
- PHP缓冲机制:缓冲控制,压缩http响应数据,缓冲 PHP输出
- php使用iconv进行从utf-8转为gb2312字符编码出错解决方案
- 手把手教你在centos下编译安装配置高性能web服务器环境nginx+php(fast-cgi)+mysql等/适合小内存vps使用
- php程序中的编码转换
- php下数据库持久连接,及apache模块下“数据库并发连接数超限”的潜在风险
- PHP路径问题及其解决方法(包含路径问题的解决方案/目录规划)
- Smarty 学习随记,很不错,值得初学参考
- PHP与Unicode签名(BOM,Byte Order Mark)
- javascript版UTF8与Utf16相互转换函数(UTF16转UTF8函数 UTF8转UTF16函数)
- UTF-8编码 简介
你好,我有一個問題,找不出原因。
我在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 回复:
四月 24th, 2011 at 00:48
@甜言蜜語, 不知你是否确认过模板文件与php程序都要使用utf-8编码,或者直接下载我提供的“基于smarty 3.0.6修改”版本试试。这个代码在godaddy的vps(centos linux)测试通过,可以支持中文变量名的。如果还是不行,我也实在无能为力,可以在文中csdn那个帖子里回复问问maquan