解决php接收shell返回的结果中文乱码问题

如果需要php执行一些shell命令,查看显示结果的话,如果shell输出的有中文,则php得到的中文返回结果可能类似是 “?\230?\180?\187?\229?\138?\168” 的字符串。那么需要这个函数转译:


代码如下:

//这个函数接收的都是路径,所以判断了文件扩展名
function shell2txt($a){
$ary = explode('/', $a);
foreach($ary as $k => $v){
if(strpos($v, '?\\') !== false){
$_ary = explode('?\\', $v);

foreach($_ary as $_k=>$_v){
if($_v == '') continue;
//判断是否有文件扩展名
$end = '';
if(strpos($_v, '.') !== false){
$end = substr($_v, strpos($_v, '.'));
}
$_ary[$_k] = dechex($_v).$end;
}

$ary[$k] = implode('%', $_ary);
}
}

$a = implode('/', $ary);
return urldecode($a);
}

(0)

相关推荐

  • php管理nginx虚拟主机shell脚本实例

    本文实例讲述了php管理nginx虚拟主机shell脚本,分享给大家供大家参考.具体分析如下: 使用php作为shell脚本是一件很方便的事情.理所当然,我们可以使用php脚本来管理 nginx虚拟主机,下面是笔者的 脚本 文件供各位参考: 复制代码 代码如下: #!/usr/bin/php -q <?php   start: fwrite(STDOUT,"===========Vhost Script===========\n"); fwrite(STDOUT,"=

  • PHP+FastCGI+Nginx配置PHP运行环境

    CGI的英文全称为Common Gateway Interface(公共网关接口),是Nginx和动态脚本程序的桥梁,Nginx通过FastCGI接口将动态请求发送给FastCGI,FastCGI中的Wrapper进程生成一个线程,将请求交给脚本解释程序执行,然后通过原来的socket将解释执行后的结果原路返回给Nginx,之后Nginx将结果交给客户端. Nginx是通过套接字文件socket来将动态请求发送给wrapper,使用的是Tcp协议.wrapper通过CGI接口来接受请求.这样we

  • PHP下利用shell后台运行PHP脚本,并获取该脚本的Process ID的代码

    复制代码 代码如下: $command = '/usr/bin/php /pub/www/u111/job/Crondo/auto_collector.php &'; $process = proc_open($command, array(),$pipes); $var = proc_get_status($process); proc_close($process); //pid就是进程ID,至于为什么要加1,我现在也没有搞懂,经过多次的测试,发现$var['pid']得到的ID比实际的少1

  • PHP中exec函数和shell_exec函数的区别

    这两个函数都是执行Linux命令函数,不同的是获取返回结果不一样,exec只能获取最后一行数据,shell_execu则可以获取全部数据. 假如脚本路径下有如下文件: 复制代码 代码如下: -bash-4.1# ll 总用量 12 -rw-rw-r--. 1 www web 133  7月 16 15:00 a.php -rw-r--r--. 1 lee web  59  2月 29 17:05 b.php -rw-r--r--. 1 lee web  81  3月  8 17:00 c.php

  • 解析php中如何直接执行SHELL

    $message=shell_exec("sudo /usr/local/webserver/nginx/sbin/nginx -t 2>&1");echo "运行结果:".$message."<br/>"; 上面的语句可以直接在PHP中执行SHELL语句 如果有返回值 那么其中的 2>&1 是必须的  他会重定向输出strerr 转到strout 输出! 否则返回结果会为空!

  • php调用shell的方法

    本文实例讲述了php调用shell的方法,分享给大家供大家参考.具体方法如下: 一.配置 查看php.ini中配置是否打开安全模式,主要是以下三个地方 safe_mode =  (这个如果为off下面两个就不用管了) disable_functions = safe_mode_exec_dir= 二.使用 由于PHP基本是用于WEB程序开发的,所以安全性成了人们考虑的一个重要方面.于是PHP的设计者们给PHP加了一个门:安全模式.如果运行在安全模式下,那么PHP脚本中将受到如下四个方面的限制:

  • 用PHP和Shell写Hadoop的MapReduce程序

    使得任何支持标准IO (stdin, stdout)的可执行程序都能成为hadoop的mapper或者 reducer.例如: 复制代码 代码如下: hadoop jar hadoop-streaming.jar -input SOME_INPUT_DIR_OR_FILE -output SOME_OUTPUT_DIR -mapper /bin/cat -reducer /usr/bin/wc 在这个例子里,就使用了Unix/Linux自带的cat和wc工具来作为mapper / reducer

  • 实现Nginx中使用PHP-FPM时记录PHP错误日志的配置方法

    nginx与apache不一样,在apache中可以直接指定php的错误日志,那样在php执行中的错误信息就直接输入到php的错误日志中,可以方便查询. 在nginx中事情就变成了这样:nginx只对页面的访问做access记录日志.不会有php的error log 信息.nginx把对php的请求发给php-fpm fastcgi进程来处理,默认的php-fpm只会输出php-fpm的错误信息,在php-fpm的errors log里也看不到php的errorlog. 原因是php-fpm的配

  • PHP统计nginx访问日志中的搜索引擎抓取404链接页面路径

    我在服务器上有每天切割nginx日志的习惯,所以针对每天各大搜索引擎来访,总能记录一些404页面信息,传统上我只是偶尔分析下日志,但是对于很多日志信息的朋友,人工来筛选可能不是一件容易的事情,这不我个人自己慢慢研究了一点点,针对谷歌.百度.搜搜.360搜索.宜搜.搜狗.必应等搜索引擎的404访问生成为一个txt文本文件,直接上代码test.php. 复制代码 代码如下: <?php //访问test.php?s=google $domain='http://www.jb51.net'; $spi

  • 叫你如何修改Nginx与PHP的文件上传大小限制

    1. 修改PHP配置文件中的三项:vim /usr/local/php/etc/php.ini (1)post_max_size = 50M #PHP可接受的最大POST数据 (2)upload_max_filesize = 50M #文件上传允许的最大值 (3)max_execution_time = 300 #每个脚本的最大执行时间,秒钟(0则不限制,不建议设0) 2. 修改Nginx配置文件:vim /usr/local/nginx/conf/nginx.conf (如果忘了配置文件的具体

  • 监控服务器swap并重启php的Shell脚本

    折中一下,写个脚本监控swap吧,放在crontab里面,2小时执行一次,世界安静了,再也没有烦人的报警短信了 复制代码 代码如下: #!/bin/bash function usage {         echo "Usage: $0"         echo "e.g. $0 1500"         exit } if [ $# -lt 1 ];then         usage fi typeset -i nowSwap limitSwap limi

  • PHP教程之PHP中shell脚本的使用方法分享

    作为命令语言,它交互式解释和执行用户输入的命令或者自动地解释和执行预先设定好的一连串的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高阶语言中才具有的控制结构,包括循环和分支. PHP经过长时间的发展,很多用户都很了解PHP了,这里我发表一下个人理解,和大家讨论讨论.大多数情况下,我使用 exec() 命令和数据数组处理所有东西.或者对更简单的命令使用 shell_exec(),尤其是不关心结果时.如果仅需返回一个 PHP shell脚本,我就使用 passthru().通常,我

随机推荐