最近领导要求用php生成word,网上找了很多类啊,函数啊。最终相中phpword。无奈不是国人开发,对中文支持很不友好。经过研究,终于解决了中文乱码,分享出来。
1、用模板word生成word中文乱码解决方案:
打开phpword/Template.php文件,找到$replace = utf8_encode($replace);将其改为$replace =iconv('gbk', 'utf-8', $replace); 即可。
2、直接生成word文档,调用addText对象时中文乱码解决方案:
打开phpword/Section.php文件,找到$givenText = utf8_encode($text);将其改为$givenText = iconv('gbk', 'utf-8', $text);即可。
3、貌似其他方法也类似第解决。
4、注意php文件采用gbk哦。反正我的显示中文了。在网上找了好久,研究了半天才搞定。
本文章来给各位介绍我在使用淘宝 API 返回的json数据无法用json_decode的问题的一些解决办法介绍,大家可参考。如题,这个问题困扰我已久。。。经过自己的多次尝试,和到网上搜索,我已大概猜测到是字符的问题,论坛上的朋友说,PHP的json_decode对json数据要求非常严格,必须是{“key”:”value”}的双引号包围才行,而且,对一些特殊符号不兼容。。。例如UTF-8的 BOM头,或者是C++字符的结束符等等。。。
经过排查,我发现。。。淘宝API返回的json数据(特别是taobao.taobaoke.items.detail.get),之所以json_decode后,结果为null,原因就是返回的数据含有回车符。。。这可能是一些店主在装修时,或者填写店铺描述,商品描述不规范所留下的。。。所以用
代码如下 | 复制代码 |
$json = str_replace(array(“rn”,”n”,”r”,”t”,chr(9),\n),”,$json ); |
这样就可以解决这个问题了。
本文章来给各位同学介绍file_get_contents不能获取带端口的网址解决办法,有需要了解的同学可参考。
先们来了解file_get_contents() 函数,官方介绍说它是把整个文件读入一个字符串中。
例子
<?php
echo file_get_contents("test.txt");
?>
输出:
This is a test file with test text.
同样此函数还可以用于获取远程服务器上的内容
file_get_contents('http://www.111cn.net');
这样也是没有问题,但是如果我带了端口了就有问题了
例如:
file_get_contents('http://localhost:12345');
没有任何获取。
解决方法是 :关闭selinux
1 永久方法 – 需要重启服务器
修改/etc/selinux/config文件中设置SELINUX=disabled ,然后重启服务器。
2 临时方法 – 设置系统参数
使用命令setenforce 0
附:
setenforce 1 设置SELinux 成为enforcing模式
setenforce 0 设置SELinux 成为permissive模式
php的allow_url_fopen选项是关闭了
原因是我们php.ini中把php的allow_url_fopen选项是关闭了,我们只要把它打开即可。
如果你没有权限打开allow_url_fopen的话我们可使用curl函数的来替换,也是很方法的。
在php中file_get_contents函数可直接采集远程服务器内容,然后保存到一个变量中了,介理一般都会把file_get_contents、fsockopen等一些IO操作的函数禁用掉,因为它们怕被 DDOS那么一般情况下,我们改不了服务器的 inc.php,只能自己写一套IO来代替上面的PHP函数了。
代码如下 | 复制代码 |
|
我们可以用下面的代码代替
代码如下 | 复制代码 |
//禁用file_get_contents的解决办法 |
curl是一个利用URL语法规定来传输文件和数据的工具,支持很多协议,如HTTP、FTP、TELNET等,它不会被服务器禁用,所以我们可以用来模拟file_get_contents一样打开一条URL。
利用function_exists函数来判断php是否支持一个函数可以轻松写出下面函数
代码如下 | 复制代码 |
< ?php function vita_get_url_content($url) { if(function_exists('file_get_contents')) { $file_contents = file_get_contents($url); } else { $ch = curl_init(); $timeout = 5; curl_setopt ($ch, CURLOPT_URL, $url); curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout); $file_contents = curl_exec($ch); curl_close($ch); } return $file_contents; } ?> |
以下是Discuz的一个报错。
Fatal error: require_once() [function.require]: Failed opening required './source/class/class_core.php' (include_path='.;c:php5pear') in D:webBBSindex.php on line 14
解决办法
修改php.ini配置文件。
代码如下 | 复制代码 |
; Windows: "path1;path2" |
如果你使用的是iis可能就权限配置问题了,我们可尝试按下面方法解决
为了行文方便,我先说下我的目录结构
1、 D:FreeHost为网站根目录,在它的下面放置DZ论坛、wordpress博客和织梦门户网站;
2、 以dz论坛举例,D:FreeHostwebdz2013_JD3QC6,这是dz程序的根目录,里面放置的是dz程序。
A、 我的网站刚开始如这样设置的,administrators和system对网站根目录FreeHos具有完全的控制权限。
B、 webdz2013_JD3QC6程序根目录的设置权限是:administrators 完全,system完全,iis来宾账户IUSR_dzusr 读取和运行、列出文件目录和读取,network service 完全控制权限且不是继承父目录的。
结果论坛的最后一步出现上面的错误。
解决方法如下
A、 对网站根目录FreeHos“只有该文件夹”添加iis来宾账户IUSR_dzusr的读权限