程序与模板全部使用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”;
…
可以直接下载本文附件,如不放心,请按上述说明自行修改。
延伸阅读
- Xdebug 插件安装与配置/linux,windows下
- php函数mult_iconv:转换任意维数组的字符集编码(扩展iconv函数功能)
- php在中url处理方面很有用的几个函数
- PHP开源搜索引擎
- 借用php脚本快速实现php站点数据迁移
- php与asp/vbscript对input表单数组的处理比较
- PHP时间戳函数总结一览
- JavaScript与PHP之间中文base64码转换源代码
- windows下PHP 激活mbstring扩展及php.ini中相关基本设置
- fedora linux apache/php下安装配置xdebug
- 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 回复:
4月 24th, 2011 at 00:48
@甜言蜜語, 不知你是否确认过模板文件与php程序都要使用utf-8编码,或者直接下载我提供的“基于smarty 3.0.6修改”版本试试。这个代码在godaddy的vps(centos linux)测试通过,可以支持中文变量名的。如果还是不行,我也实在无能为力,可以在文中csdn那个帖子里回复问问maquan