- 浏览: 1075260 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (290)
- php (65)
- javascript (36)
- html5 (31)
- thinkphp (9)
- mysql (16)
- jquery (13)
- node.js (9)
- css (9)
- android 开发 (8)
- flex (5)
- java (3)
- apache (8)
- linux (8)
- git (5)
- web (5)
- wordpress (9)
- mongodb (2)
- redis (5)
- yaf (6)
- python (4)
- big data (1)
- sphinx (1)
- html (1)
- bootstrap (1)
- vue (1)
- laravel (1)
- test (0)
最新评论
-
July01:
推荐用StratoIO打印控件,支持网页、URL、图片、PD、 ...
如何解决非IE浏览器的web打印 -
flashbehappy:
同一个视频,有mp4,ogg两种格式的。在chrome,fir ...
firefox chrom safari 对video标签的区别 -
xmdxzyf:
可以在网站(www.sosoapi.com)上试下在线表单方式 ...
用swagger-php/ui做API测试 -
flex_莫冲:
a2631500 写道"看了源码,设置Backbon ...
backbone与php交互 -
a2631500:
"看了源码,设置Backbone.emulateJS ...
backbone与php交互
為了讓URL支持中文,例如www.xxx.com/廣州/xx 需要在emptyAction中處理捕獲到的廣州/xxxx。但是TP默認的module名稱是不支持中文的。因此需要修改TP框架的PHP核心文件:
App.class.php
修改後的代碼:
將需要支持的中文module名稱添加到config.php CHINESE_MODULE_NAME 配置數組中
這樣就能支持中文URL解析了。
App.class.php
修改後的代碼:
/** * 执行应用程序 * @access public * @return void */ static public function exec() { if(!preg_match('/^[A-Za-z](\w)*$/',MODULE_NAME) ){ // 安全检测 $module = false; }else{ //创建Action控制器实例 $group = defined('GROUP_NAME') && C('APP_GROUP_MODE')==0 ? GROUP_NAME.'/' : ''; //$module = A($group.MODULE_NAME); if(preg_match("/[\x7f-\xff]/", MODULE_NAME)){//中文模式 if(in_array(MODULE_NAME,C('CHINESE_MODULE_NAME'))){ //在指定的中文內 $module = A($group.'isTheEmpty'); }else{ _404(L('_MODULE_NOT_EXIST_').':'.MODULE_NAME); } }else{ $module = A($group.MODULE_NAME); } } if(!$module) { if('4e5e5d7364f443e28fbf0d3ae744a59a' == MODULE_NAME) { header("Content-type:image/png"); exit(base64_decode(App::logo())); } if(function_exists('__hack_module')) { // hack 方式定义扩展模块 返回Action对象 $module = __hack_module(); if(!is_object($module)) { // 不再继续执行 直接返回 return ; } }else{ // 是否定义Empty模块 $module = A($group.'Empty'); if(!$module){ _404(L('_MODULE_NOT_EXIST_').':'.MODULE_NAME); } } } // 获取当前操作名 支持动态路由 $action = C('ACTION_NAME')?C('ACTION_NAME'):ACTION_NAME; $action .= C('ACTION_SUFFIX'); try{ if(!preg_match('/^[A-Za-z](\w)*$/',$action)){ // 非法操作 throw new ReflectionException(); } //执行当前操作 $method = new ReflectionMethod($module, $action); if($method->isPublic()) { $class = new ReflectionClass($module); // 前置操作 if($class->hasMethod('_before_'.$action)) { $before = $class->getMethod('_before_'.$action); if($before->isPublic()) { $before->invoke($module); } } // URL参数绑定检测 if(C('URL_PARAMS_BIND') && $method->getNumberOfParameters()>0){ switch($_SERVER['REQUEST_METHOD']) { case 'POST': $vars = array_merge($_GET,$_POST); break; case 'PUT': parse_str(file_get_contents('php://input'), $vars); break; default: $vars = $_GET; } $params = $method->getParameters(); foreach ($params as $param){ $name = $param->getName(); if(isset($vars[$name])) { $args[] = $vars[$name]; }elseif($param->isDefaultValueAvailable()){ $args[] = $param->getDefaultValue(); }else{ throw_exception(L('_PARAM_ERROR_').':'.$name); } } $method->invokeArgs($module,$args); }else{ $method->invoke($module); } // 后置操作 if($class->hasMethod('_after_'.$action)) { $after = $class->getMethod('_after_'.$action); if($after->isPublic()) { $after->invoke($module); } } }else{ // 操作方法不是Public 抛出异常 throw new ReflectionException(); } } catch (ReflectionException $e) { // 方法调用发生异常后 引导到__call方法处理 $method = new ReflectionMethod($module,'__call'); $method->invokeArgs($module,array($action,'')); } return ; }
將需要支持的中文module名稱添加到config.php CHINESE_MODULE_NAME 配置數組中
這樣就能支持中文URL解析了。
发表评论
-
将博客搬至CSDN
2017-03-28 09:07 495将博客搬至CSDN,尽情期待 -
laravel入門
2017-03-03 16:31 5421 全局安裝 composer global require ... -
导出csv,excel等文件,文件内容错误的问题,需要加上ob_end_clean
2017-03-02 11:54 1451见这个问题: http://stackoverflow.com ... -
facebook graph api从2.6转到2.8的问题处理
2017-02-15 16:30 935之前一直用facebook 2.6的api,现在想升级到2.8 ... -
php从mysql读取超过200W行的表
2017-01-04 10:09 551需要从一个大表,如user表中读取所有user数据再做整理并導 ... -
一个session失效的伪命题
2016-12-08 18:33 650最近遇到一个问题,一个ajax请求会调用已存在的session ... -
tp5与tp3的区别
2016-11-21 14:33 1476TP5作了很大的改变,更加灵活,没那么臃肿了,加入了一些令人振 ... -
推送消息能不能区分禁止通知和卸载两种类型?
2016-11-18 10:54 1359消息推送ios用了apns,android用的是gcm。推送失 ... -
yaf在命令行模式下出现PHP Fatal error: Class 'Yaf_Application' not found的解决办法
2016-11-11 16:42 2301为了跑个yaf的crontab,执行时报错: PHP Fata ... -
推送emoji表情乱码的解决方法
2016-11-04 17:44 1878推送内容如果包含了emoji表情,需要做以下修改 1 mysq ... -
YAF访问图片等静态资源禁止调用YAF框架的解决办法
2016-10-20 17:55 1565当访问yafpublic 目录下的某个静态资源时,依然会访问y ... -
在线自动协同编辑文本的实现方案
2016-10-14 16:49 1904要实现可以自动在线协同编辑文本的功能。就类似google do ... -
Paypal支付跳转失败的原因及解决办法
2016-09-18 14:27 3493遇到在跳转到paypal支付页面的时候出现502 bad ga ... -
文件格式不是unix导致sed,cat等读取文件后无法正常退出
2016-08-30 14:44 704#!/bin/bash bucket_config=&quo ... -
varnish的使用和PHP清除缓存的技巧
2016-08-11 14:10 1214官網地址 https://www.varnish-cache. ... -
TP在APP_DEBUG=false的情況下,CLI和WEBSITE會共用同一個~runtime.php導致出錯的問題解決辦法
2015-12-14 11:43 774TP若使用了 define('APP_DEBU ... -
TP3.2的try catch如何捕获异常
2015-10-29 17:16 1285参考:http://www.oschina.net/quest ... -
node.js获取php curl post数据req.body为空的处理
2015-09-22 11:43 3868node使用了express4和body-parser来解析p ... -
yaf namespace的使用
2015-08-27 11:32 2247yaf支持namespace。在php.ini 中添加 yaf ... -
yaf 添加phpunittest
2015-08-21 11:16 560首先要讓php在cli下支持yaf wamp下打開D:/wam ...
相关推荐
支持个大TP游戏支持个大TP游戏支持个大TP游戏支持个大TP游戏支持个大TP游戏支持个大TP游戏支持个大TP游戏支持个大TP游戏支持个大TP游戏支持个大TP游戏支持个大TP游戏支持个大TP游戏支持个大TP游戏支持个大TP游戏支持...
详细介绍了芯片tp4056的中文资料以及应用图,中英对照
TP6806 SDK v0.95 tp6806_refer_osg
西门子 TP 170micro、TP 170A、TP 中文手册zip,西门子 TP 170micro、TP 170A、TP 中文手册
tp2825 海思hi3516开发板驱动,集成程度高。。。。。。
用于WINDOWS平台下的L2TP客户端工具,支持思科,华为等主要网络设备的L2TP技术,可支持PPTP。。
西门子TP1200触摸屏不能显示汉字和摄氏度符号,中文字符显示异常的处理对策
TP UBOOT支持机型及可用原厂固件说明
TP2828 TP2831 TP9930
TP4056是一款完整的单节锂离子电池采用恒定电流/恒定电压线性充电器。其底部带有散热片的SOP8封装与较少的外部元件数目使得TP4056成为便携式应用的理想选择。TP4056可以适合USB电源和适配器电源工作。 由于采用了...
TP3064和TP3067都是单片机PCM CODEC/滤波器,他具有A/D,D/A变换结构,和串行的PCM接口。
TP9000D USB掌机驱动和光盘其他内容
ISP程序 TP2804 2808烧写软件ISP程序 TP2804 2808烧写软件ISP程序 TP2804 2808烧写软件ISP程序 TP2804 2808烧写软件ISP程序 TP2804 2808烧写软件ISP程序 TP2804 2808烧写软件ISP程序 TP2804 2808烧写软件ISP程序 TP...
西门子触摸屏TP070中文使用手册比较老的东东呢
配置nginx支持tp框架.rar
tp900驱动,下载,集成界面软件,使用方便,欢迎下载使用
L2TP提供包头压缩、隧道验证,而PPTP不支持。L2TP协议是由IETF起草,微软、Ascend、Cisco、3COM等公司参予制定的二层隧道协议,它结合了PPTP和L2F两种二层隧道协议的优点,为众多公司所接受,已经成为IETF有关2层...
01 MSR810_MSR93X系列路由器L2TP (LAC---LNS模式)配置方法 02 ICG5000G_T_ICG6000系列路由器L2TP (LAC---LNS模式)配置方法 03 ICG2000D_ICG3000F系列路由器L2TP (LAC---LNS模式)配置方法 04 MSR2600-XX-X1_...
TP2915 is a video D/A solution for converting HD digital video signal into the analog domain that is suitable for transmission over single coaxial or twist-pair cable over long reach. The major ...
过TP驱动保护,其他地方找来的,可以参考一下