首页 > 编程技术 > php

PHP使用strrev翻转中文乱码问题的解决方法

发布时间:2017-1-22 11:08

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生成图片缩略图类示例,有兴趣的同学可以参考一下

本文实例讲述了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> |&emsp;<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'))

      

  • Login

      

  • Register

     @else

      

       

        {{ Auth::guard('admin')->user()->name }}

       

       

        

  • Logout

       

      

     @endif

    

现在试一下前后台分别登录吧!

7.可能遇到的页面跳转问题

如果你遇到了这种情况可以尝试修改一下Middleware\Authenticate.php

returnredirect()->guest($guard.'/login');

标签:[!--infotagslink--]

您可能感兴趣的文章: