CSV(unicode)文件到php数组

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CSV(unicode)文件到php数组相关的知识,希望对你有一定的参考价值。

CSV(unicode) file to php array
  1. sample.csv
  2. ----------------
  3. name,email
  4. 政府,[email protected]
  5. 한국,[email protected]
  6. ----------------
  7.  
  8. =======================================
  9. <?php
  10.  
  11. function str_to_csv( $row )
  12. {
  13. if( $row=='' )
  14. {
  15. return array();
  16. }
  17. $a = array();
  18. $src = explode(',', $row );
  19. do{
  20. $p = array_shift($src);
  21. while( mb_substr_count($p,'"') % 2 != 0 )
  22. {
  23. if( count($src)==0 ){ return false; }
  24. $p .= ','.array_shift($src);
  25. }
  26. $match = null;
  27. if( preg_match('/^"(.+)"[
  28. ]*$/', $p, $match ))
  29. {
  30. $p = $match[1];
  31. }
  32. $a[] = str_replace('""','"',$p);
  33. }while( count($src) > 0 );
  34. return $a;
  35. }
  36.  
  37.  
  38. function file_getcsv( $f )
  39. {
  40. $line = fgets( $f );
  41. while( ($a = str_to_csv($line))===false )
  42. {
  43. if( feof($f) ){ return false; }
  44. $line .= " ".fgets( $f );
  45. }
  46. return $a;
  47. }
  48.  
  49.  
  50. function file_to_csv( $filename )
  51. {
  52. ini_set("auto_detect_line_endings", true);
  53. $a = array();
  54. $f = fopen($filename,'r');
  55. while( !feof($f) )
  56. {
  57. $rec = file_getcsv($f);
  58. if( $rec===false ){ return false; }
  59. if( !empty($rec) )
  60. {
  61. $a[] = $rec;
  62. }
  63. }
  64. fclose($f);
  65. return $a;
  66. }
  67.  
  68. $data = file_to_csv('sample.csv');
  69.  
  70. echo '<pre>';print_r($data);

以上是关于CSV(unicode)文件到php数组的主要内容,如果未能解决你的问题,请参考以下文章

PHP操作CSV文件的编码问题

如何使用 PHP 和 fgetcsv 函数从 CSV 文件创建数组

PHP:从二维数组中删除数组

PHP 如何生成编码为Unicode的txt文件

python 正则匹配 csv文件中特殊符号如■高风险 这样的black block

使用php将csv文件保存在本地机器上