fgetcvs在linux的问题

2015-01-24信息快讯网

PHP5中的fgetcsv()函数在Linux上会有一个Bug:把文本字段的第一个字符的高位去除掉了,然后就会产生乱码

看到有人在有汉字的字符串 前加一个 ‘ 或是任意半角符号,让bug将其除掉,不过这样做太麻烦了。最后呢,找来一个模拟fgetcsv功能的函数。
 
function __fgetcsv(& $handle, $length = null, $d = ‘,', $e = ‘”‘) { 
$d = preg_quote($d); 
$e = preg_quote($e); 
$_line = “”; 
$eof=false; 
while ($eof != true) { 
$_line .= (empty ($length) ? fgets($handle) : fgets($handle, $length)); 
$itemcnt = preg_match_all(‘/' . $e . ‘/', $_line, $dummy); 
if ($itemcnt % 2 == 0) 
$eof = true; 
} 
$_csv_line = preg_replace(‘/(?: |[ ])?$/', $d, trim($_line)); 
$_csv_pattern = ‘/(‘ . $e . ‘[^' . $e . ']*(?:' . $e . $e . ‘[^' . $e . ']*)*' . $e . ‘|[^' . $d . ']*)' . $d . ‘/'; 
preg_match_all($_csv_pattern, $_csv_line, $_csv_matches); 
$_csv_data = $_csv_matches[1]; 
for ($_csv_i = 0; $_csv_i < count($_csv_data); $_csv_i++) { 
$_csv_data[$_csv_i] = preg_replace(‘/^' . $e . ‘(.*)' . $e . ‘$/s', ‘$1′ , $_csv_data[$_csv_i]); 
$_csv_data[$_csv_i] = str_replace($e . $e, $e, $_csv_data[$_csv_i]); 
} 
return empty ($_line) ? false : $_csv_data; 
} 
强烈声明: 不要使用(include/require)_once
深入PHP empty(),isset(),is_null()的实例测试详解
解析如何屏蔽php中的phpinfo()函数
探讨file_get_contents与curl效率及稳定性的分析
$_GET['goods_id']+0 的使用详解
深入理解require与require_once与include以及include_once的区别
深入php define()函数以及defined()函数的用法详解
php set_time_limit()函数的使用详解
深入理解用mysql_fetch_row()以数组的形式返回查询结果
fetchAll()与mysql_fetch_array()的区别详解
用mysql_fetch_array()获取当前行数据的方法详解
深入分析使用mysql_fetch_object()以对象的形式返回查询结果
深入mysql_fetch_row()与mysql_fetch_array()的区别详解
获取php页面执行时间,数据库读写次数,函数调用次数等(THINKphp)
PHP fgetcsv 定义和用法(附windows与linux下兼容问题)
yii框架中的Url生产问题小结
PHP异步调用socket实现代码
Trying to clone an uncloneable object of class Imagic的解决方法
win2003服务器使用WPS的COM组件的一些问题解决方法
比file_get_contents稳定的curl_get_contents分享
php删除页面记录 同时刷新页面 删除条件用GET方式获得
如何用phpmyadmin设置mysql数据库用户的权限
使用PHPMyAdmin修复论坛数据库的图文方法
php读取mysql乱码,用set names XXX解决的原理分享
利用ThinkPHP内置的ThinkAjax实现异步传输技术的实现方法
采用PHP函数memory_get_usage获取PHP内存清耗量的方法
Linux fgetcsv取得的数组元素为空字符串的解决方法
php空间不支持socket但支持curl时recaptcha的用法
php环境配置之CGI、FastCGI、PHP-CGI、PHP-FPM、Spawn-FCGI比较?
PHP setcookie指定domain参数后,在IE下设置cookie失效的解决方法
PHP setcookie设置Cookie用法(及设置无效的问题)
©2014-2024 dbsqp.com