PHP使用strrev翻转中文乱码问题的解决方法
本文实例讲述了PHP使用strrev翻转中文乱码问题的解决方法。分享给大家供大家参考,具体如下:
在用PHP中的strrve翻转中文时,会出现乱码情况
例如:
代码如下 | 复制代码 |
header("Content-Type: text/html; charset=utf-8"); echostrrev("处理使用strrev()函数时的乱码问题")." |
运行结果为:
代码如下 | 复制代码 |
��???䄚?氕潇�)(verrts��?䆐?r� |
解决方法就是自己重写一个cnstrrev的函数
代码如下 | 复制代码 |
header("Content-Type: text/html; charset=utf-8"); $str='处理使用strrev()函数时的乱码问题' functioncnstrrev($str) { $len=strlen($str); for($i= 0;$i<$len;$i++) { $char=$str{0}; if(ord($char) > 127)//ord()函数取得第一个字符的ASCII码,如果大于0xa0(127)的话则是中文字符 { $i+=2;//utf-8编码的情况下,一个中文字符占三个字节 if($i<$len) { $arr[] =substr($str, 0, 3);//utf-8编码的情况下,一个中文字符占三个字节 $str=substr($str, 3); } } else { $arr[] =$char; $str=substr($str, 1);//否则为非中文,占一个字符 } } returnjoin(array_reverse($arr));//以相反的元素顺序返回数组: } echo$str.'+'.cnstrrev($str); |
运行结果为:
代码如下 | 复制代码 |
处理使用strrev()函数时的乱码问题+题问码乱的时数函)(verrts用使理处 |
本文实例讲述了PHP生成图片缩略图类。分享给大家供大家参考,具体如下:
代码如下 | 复制代码 |
classApp_image_helper { protected$imgFileName; protected$imgWidth; protected$imgHeight; protected$imgMime; protected$imgResource; static $imgMineList =array( 'jpeg'=>'image/jpeg', 'gif'=>'image/gif', 'png'=>'image/png', 'wbmp'=>'image/wbmp', ); /** * 根据文件名,初始化图片, * 计算出给定图片的宽、高、图片类型,并获取图片的资源保存到内存,便于下次使用 * App_image_helper constructor. * * @param $fileName */ publicfunction__construct($fileName) { $this->imgFileName =$fileName; list($this->imgWidth,$this->imgHeight,$this->imgMime) =$this->getImageInfo($this->imgFileName); $this->imgResource =$this->getImageResource($this->imgFileName); } /** * 根据图片路径获取相关宽、高、MIME类型信息 * * @param $fileName * * @return array|null */ protectedfunctiongetImageInfo($fileName) { $result= null; if(is_file($fileName) ) { $tmpImageInfo=getimagesize($fileName); if($tmpImageInfo) { $result=array($tmpImageInfo[0],$tmpImageInfo[1],$tmpImageInfo['mime']); } } return$result; } /** * 将图片文件转为资源类类型 * * @param $fileName * * @return null|resource */ protectedfunctiongetImageResource($fileName) { $image= null; if(is_file($fileName) ) { switch($this->imgMime) { caseself::$imgMineList['jpeg']: $image= imagecreatefromjpeg($fileName); break; caseself::$imgMineList['gif']: $image= imagecreatefromgif($fileName); break; caseself::$imgMineList['png']: $image= imagecreatefrompng($fileName); break; caseself::$imgMineList['wbmp']: $image= imagecreatefromwbmp($fileName); break; default: break; } } return$image; } /** * 可根据固定宽,等比缩放图片;或根据百分比,等比缩放图片 * * @param int $width * @param int $percent * * @return array|null */ protectedfunctiongetSizeByScale($width= 360,$percent= 1) { $result= null; if($this->imgWidth &&$this->imgHeight ) { if($width) { $result=array($width,intval($width*$this->imgHeight /$this->imgWidth)); }elseif($percent) { $result=array(intval($this->imgWidth *$percent),intval($this->imgHeight *$percent)); } } return$result; } /** * 外调 * * @param int $percentOrWidth int整数表示图片缩放为固定宽度,0.0~0.99999表示缩放百分比 * @param null $fileName * @param int $quality * @param bool $reSample 重新采样图片,默认是 * * @return bool */ publicfunctioncreateImage($percentOrWidth= 1,$fileName= null,$quality= 75,$reSample= true) { $result= false; $fileName? header('Content-Type: '.$this->imgMime) : false; $size=$this->getSizeByScale(($percentOrWidth<= 1) ? null :$percentOrWidth,$percentOrWidth); if($size) { $thumb= imagecreatetruecolor($size[0],$size[1]); if($reSample) { imagecopyresampled($thumb,$this->imgResource, 0, 0, 0, 0,$size[0],$size[1],$this->imgWidth,$this->imgHeight); }else{ imagecopyresized($thumb,$this->imgResource, 0, 0, 0, 0,$size[0],$size[1],$this->imgWidth,$this->imgHeight); } $result= imagejpeg($thumb,$fileName,$quality); } return$result; } } |
小编推荐的这篇文章介绍了PHPCMS遭遇会员投稿审核无效的解决方法,遇到问题的同学可以试试文中方案解决一下
今天接到主编那边的反馈,说本站的会员投稿平台,后台无法审核文章了,赶紧看看吧
本来想偷个懒,去度娘那里搜搜,看有相同情况的解决方案没,结果大失所望,虽然也有几个类似的情况,要么没解决,要么就是原因跟本站不同。
得了,毛主席他老人家教导我们,自己动手,丰衣足食!
先找到审核的相关程序页
/phpcms/modules/content/content.php中的pass()方法,检查了下,并无被修改的现象
去审核页面按F12调试,控制台也无报错情况
真是奇了怪了,
查看下源码,发现了这段
代码如下 | 复制代码 |
<script type="text/javascript">art.dialog({lock:false,title:'管理操作',mouse:true, id:'content_m', content:'<span id=cloading ><a href=\'javascript:ajax_manage(1)\'>通过审核</a> | <a href=\'javascript:ajax_manage(2)\'>退稿</a> | <a href=\'javascript:ajax_manage(3)\'>删除</a></span>',left:'100%',top:'100%',width:200,height:50,drag:true, fixed:true}); functionajax_manage(type) { if(type==1) { $.get('?m=content&c=content&a=pass&ajax_preview=1&catid=6&steps=1&id=533&pc_hash=4KwIwD'); }elseif(type==2) { $.get('?m=content&c=content&a=pass&ajax_preview=1&reject=1&catid=6&steps=1&id=533&pc_hash=4KwIwD'); }elseif(type==3) { $.get('?m=content&c=content&a=delete&ajax_preview=1&dosubmit=1&catid=6&steps=1&id=533&pc_hash=4KwIwD'); } $('#cloading').html('<font color=red>操作成功!<span id="secondid">2</span>秒后自动离开...</font>'); setInterval('set_time()', 1000); setInterval('window.close()', 2000); } functionset_time() { $('#secondid').html(1); } </script> |
怪不得不报错。。。
好了,我们把审核链接单独拿出来 http://yourdomain.com/index.php?m=content&c=content&a=pass&ajax_preview=1&catid=6&steps=1&id=533&pc_hash=4KwIwD
放到浏览器地址栏执行一下
果然,有了错误提示了
| MySQL Error : Table'.\***\v9_search'is markedascrashedandshould be repaired MySQL Errno : 145 Message : Table'.\***\v9_search'is markedascrashedandshould be repaired |
原来是search表需要修复下。。。那就修修吧,修完之后,果然审核功能正常了
这篇文章介绍了laravel5.2实现区分前后台用户登录的方法,很实用,有需要的同学可以参考一下本文1.前台登录
直接使用laravel自带的auth
php artisan make:auth |
然后可以查看路由文件:
Route::group(['middleware'=>'web'],function() { Route::auth(); Route::get('/home','HomeController@index'); }); |
执行php artisan migrate
会发现生成了两张表。
2.后台登录
编辑配置文件
config\auth.php
添加guards中的admin和providers中的admins
<?php return[ 'defaults'=> [ 'guard'=>'web', 'passwords'=>'users', ], 'guards'=> [ 'web'=> [ 'driver'=>'session', 'provider'=>'users', ], 'admin'=> [ 'driver'=>'session', 'provider'=>'admins', ], 'api'=> [ 'driver'=>'token', 'provider'=>'users', ], ], 'providers'=> [ 'users'=> [ 'driver'=>'eloquent', 'model'=> App\User::class, ], 'admins'=> [ 'driver'=>'eloquent', 'model'=> App\Admin::class, ], ], 'passwords'=> [ 'users'=> [ 'provider'=>'users', 'email'=>'auth.emails.password', 'table'=>'password_resets', 'expire'=> 60, ], ], ]; |
3.创建数据模型
执行php artisan make:model Admin --migration
然后修改database\migrations中的数据表结构,复制user表的就可以
执行php artisan migrate 会发现生成了admin表
4.定义后台路由
这里我直接定义了一个路由组
Route::group(['prefix'=>'admin','middleware'=>'admin'],function() { Route::get('login','Admin\AuthController@getLogin'); Route::post('login','Admin\AuthController@postLogin'); Route::get('register','Admin\AuthController@getRegister'); Route::post('register','Admin\AuthController@postRegister'); Route::get('logout','Admin\AuthController@logout'); Route::get('/','Admin\AdminController@index'); }); |
5.创建控制器
执行
php artisan make:controller Admin/AuthController php artisan make:controller Admin/AdminController |
AuthController.php可参照Auth中的AuthController.php
<?php namespaceApp\Http\Controllers\Admin; useApp\Admin; useValidator; useApp\Http\Controllers\Controller; useIlluminate\Foundation\Auth\ThrottlesLogins; useIlluminate\Foundation\Auth\AuthenticatesAndRegistersUsers; classAuthControllerextendsController { useAuthenticatesAndRegistersUsers, ThrottlesLogins; protected$redirectTo='/admin' protected$guard='admin' protected$loginView='admin.login' protected$registerView='admin.register' publicfunction__construct() { $this->middleware('guest:admin', ['except'=>'logout']); } protectedfunctionvalidator(array$data) { returnValidator::make($data, [ 'name'=>'required|max:255', 'email'=>'required|email|max:255|unique:admins', 'password'=>'required|confirmed|min:6', ]); } protectedfunctioncreate(array$data) { returnAdmin::create([ 'name'=>$data['name'], 'email'=>$data['email'], 'password'=> bcrypt($data['password']), ]); } } |
AdminController.php
<?php namespaceApp\Http\Controllers\Admin; useIlluminate\Http\Request; useApp\Http\Requests; useApp\Http\Controllers\Controller; useAuth; classAdminControllerextendsController { publicfunction__construct() { $this->middleware('auth:admin'); } publicfunctionindex() { $admin= Auth::guard('admin')->user(); returnview('admin.home'); } } |
6.创建视图
这里直接复制auth中的视图和home.blade.php到一个新的admin文件夹中。
修改login和register中表单的action,添加上admin前缀
修改layouts中的app.blade.php
@if(Auth::guest('admin'))
@else
{{ Auth::guard('admin')->user()->name }}
@endif
|
现在试一下前后台分别登录吧!
7.可能遇到的页面跳转问题
如果你遇到了这种情况可以尝试修改一下Middleware\Authenticate.php
returnredirect()->guest($guard.'/login'); |
相关文章
- 最近做了个扫描二维码得到vcard的项目,遇到一个问题,有一部分生成完的二维码,用android系统手机扫描后得到的vcard中的中文姓名是乱码,经过比对发现,这部分vcard中ORG这个...2016-11-25
php 中file_get_contents超时问题的解决方法
file_get_contents超时我知道最多的原因就是你机器访问远程机器过慢,导致php脚本超时了,但也有其它很多原因,下面我来总结file_get_contents超时问题的解决方法总结。...2016-11-25- 相信很多站长都遇到过这样一个问题,访问页面时出现408错误,下面一聚教程网将为大家介绍408错误出现的原因以及408错误的解决办法。 HTTP 408错误出现原因: HTT...2017-01-22
- 今天在写一个vbs的时候,发现中文乱码,后来写好代码正常运行的代码压缩一下给了同事,发现报无效字符,经过验证后发现原来是编码的问题导致,这里就为大家分享一下...2020-06-30
- 最近想自学PHP ,做了个验证码,但不知道怎么搞的,总出现一个如下图的小红叉,但验证码就是显示不出来,原因如下 未修改之前,出现如下错误; (1)修改步骤如下,原因如下,原因是apache权限没开, (2)点击打开php.int., 搜索extension=ph...2013-10-04
安卓手机wifi打不开修复教程,安卓手机wifi打不开解决方法
手机wifi打不开?让小编来告诉你如何解决。还不知道的朋友快来看看。 手机wifi是现在生活中最常用的手机功能,但是遇到手机wifi打不开的情况该怎么办呢?如果手机wifi...2016-12-21连接MySql速度慢的解决方法(skip-name-resolve)
最近在Linux服务器上安装MySql5后,本地使用客户端连MySql速度超慢,本地程序连接也超慢。 解决方法:在配置文件my.cnf的[mysqld]下加入skip-name-resolve。原因是默认安装的MySql开启了DNS的反向解析。如果禁用的话就不能...2015-10-21关于Mysql中文乱码问题该如何解决(乱码问题完美解决方案)
最近两天做项目总是被乱码问题困扰着,这不刚把mysql中文乱码问题解决了,下面小编把我的解决方案分享给大家,供大家参考,也方便以后自己查阅。首先:用show variables like “%colla%”;show varables like “%char%”;这两条...2015-11-24总结android studio注意事项及打不开等问题解决方法
经过一段时间的使用,总结了android studio打不开等问题的6种解决方法及android studio注意事项,希望对大家有所帮助。 1 首次运行,建立好项目需要下载一些东西,如果...2016-09-20- 在 php 中使用 json_encode() 内置函数(php > 5.2)可以使用得 php 中数据可以与其它语言很好的传递并且使用它。这个函数的功能是将数值转换成json数据存储格式。<?php$arr = array ( 'Name'=>'希亚', 'Age'...2015-11-08
MySQL ERROR 2013 (HY000)错误解决方法
当通过 TCP/IP 连接 MySQL 远程主机时,出现 ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 104 。如果是在linux shell命令行中直接打 mysql 命令,...2015-03-15C#中图片旋转和翻转(RotateFlipType)用法分析
这篇文章主要介绍了C#中图片旋转和翻转(RotateFlipType)用法,实例分析了C#图片旋转及翻转Image.RotateFlip方法属性的常用设置技巧,需要的朋友可以参考下...2020-06-25IE6-IE9中tbody的innerHTML不能赋值的解决方法
IE6-IE9中tbody的innerHTML不能赋值,重现代码如下 复制代码 代码如下: <!DOCTYPE html> <html> <head> <meta charset="utf-8"/> <title>IE6-IE9中tbody的innerHTML不能复制bug</title> </head> <body style="height:3...2014-06-07- centos6.2,停止mysqld然后修改/etc/my.cnf datadir的位置,启动mysqld提示FAILED,查看日志 复制代码 代码如下: 120609 11:31:31 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended 120609 11:35:12 my...2015-03-15
- 小米手机如果想要刷机就必须要先解锁验证才可以,那么,如果遇到小米解锁验证失败以及小米解锁工具登录失败的现象怎么办呢?对此,本文就为大家进行解答,有需要的朋友来看看。...2016-12-21
Photoshop提示“此产品的许可证已过期"及“无法开始您的Adobe Photoshop CS5.1 订阅”解决方法
首先不要鄙视我用Photoshop盗版,实在是贵。现在我们来看看如果你的Photoshop提示“此产品的许可证已过期",还有“无法开始您的Adobe Photoshop CS5.1 订阅”如何解决吧...2016-09-14解决HttpPost+json请求---服务器中文乱码及其他问题
这篇文章主要介绍了解决HttpPost+json请求---服务器中文乱码及其他问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-01-22- 今天小编在这里就来给各位photoshop的这一款软件的使用者们来详细的说一下软件的字体出现了乱码这一问题的解决方法,那么各位有出现这个问题的,下面就来跟着小编一起看...2016-09-14
- 用到iconv函数把抓取来过的utf-8编码的页面转成gb2312, 发现只有用iconv函数把抓取过来的数据一转码数据就会无缘无故的少一些 代码如下 复制代码 ...2016-11-25
- 有部分小伙伴表示自己遇到了51模拟器程序不能打开的情况,那么51模拟器打不开怎么回事?下面我就来为大家分享一下解决的方法,有需要的小伙伴就来看一看吧。  &...2017-07-06