Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用shell命令执行字符操作_Php_Csv_Character Encoding - Fatal编程技术网

Php 使用shell命令执行字符操作

Php 使用shell命令执行字符操作,php,csv,character-encoding,Php,Csv,Character Encoding,我需要将从Mac Excel 2011导出的CSV文件转换为CMS识别的可导入格式。解决方案不应相关,但导入格式适用于Drupal Feeds模块,尽管目标是 为此,目前我需要在Vim中执行以下操作: :%s/\r/\r/g :w ++enc=utf8 这基本上意味着: 转换回车为某种通用格式 最初Excel导出时,回车符用^M表示 Vim命令:%s/\r/\r/g将它们全部转换为CMS识别为回车的格式 将字符编码转换为UTF8。 最初导出时,字符集是ASCII扩展的或类似的。 理想情况下,这

我需要将从Mac Excel 2011导出的CSV文件转换为CMS识别的可导入格式。解决方案不应相关,但导入格式适用于Drupal Feeds模块,尽管目标是

为此,目前我需要在Vim中执行以下操作:

:%s/\r/\r/g
:w ++enc=utf8
这基本上意味着:

转换回车为某种通用格式 最初Excel导出时,回车符用^M表示 Vim命令:%s/\r/\r/g将它们全部转换为CMS识别为回车的格式 将字符编码转换为UTF8。 最初导出时,字符集是ASCII扩展的或类似的。 理想情况下,这个过程需要在上传文件作为导入的一部分时触发,这意味着PHP将触发该过程,无论这对该过程是否有任何影响。不过,在这一点上,我觉得将解决方案作为shell脚本或类似的东西来处理会更舒服一些,但如果我能找到如何将其挂接到Drupal 7提要中,当然欢迎使用PHP解决方案。

一些未经测试的代码:

#!/bin/php
<?php

$replacements = array(
    // Adjust destination char to your liking
    "\r\n" => "\n",
    "\r" => "\n",
    "\n" => "\n",
);

// No risk to split chars: input is single byte
while( $line = fread(STDIN, 10240) ){
    // Normalize line feeds
    $line = strtr($line, $replacements);

    // Convert to UTF-8 (adjust source encoding to your needs)
    $line = iconv('CP1252', 'UTF-8', $line);

    fwrite(STDOUT, $line);
}
用法:

./fix-csv < input.csv > output.csv

如果这就是所有的问题,你可以用PHP编写shell脚本。是的,你是对的,这篇文章花了我一段时间才写完,直到我满意为止,清晰度似乎快结束了。我只是想确认一下,我知道我可以用PHP编写shell命令,挑战是我不知道要编写什么shell命令。