【问题标题】:Read CSV file and replace accented characters using PHP读取 CSV 文件并使用 PHP 替换重音字符
【发布时间】:2018-02-27 23:48:39
【问题描述】:

我有一个 CSV 文件,里面有数据。 CSV 文件以逗号分隔。它包含重音字符。我希望能够对文件进行清理,以将所有重音字符替换为对应的英文字符。

我正在使用 PHP 读取文件,并且我有一个替换重音字符的函数。但是,我似乎无法使该功能正常工作。

读取 CSV 文件。

$row = 1;
if ( ( $handle = fopen( $input_filename , "r" ) ) !== FALSE ) {

    while( ( $data = fgetcsv( $handle, 1000, "," ) ) !== FALSE ) {

        $num = count( $data );

        $row++;

        for ( $c=0; $c < $num; $c++ ) {

            echo replaceAccents( $data[$c] )."\n";

        }

    }

    fclose( $handle );
}

替换口音功能

function replaceAccents($str) {

  $search = explode(",","ç,æ,œ,á,é,í,ó,ú,à,è,ì,ò,ù,ä,ë,ï,ö,ü,ÿ,â,ê,î,ô,û,å,ø,Ø,Å,Á,À,Â,Ä,È,É,Ê,Ë,Í,Î,Ï,Ì,Ò,Ó,Ô,Ö,Ú,Ù,Û,Ü,Ÿ,Ç,Æ,Œ");

  $replace = explode(",","c,ae,oe,a,e,i,o,u,a,e,i,o,u,a,e,i,o,u,y,a,e,i,o,u,a,o,O,A,A,A,A,A,E,E,E,E,I,I,I,I,O,O,O,O,U,U,U,U,Y,C,AE,OE");

  return str_replace($search, $replace, $str);


}

当我运行程序时,它似乎仍然会回显重音字符。

我怎样才能读入文件,替换重音字符,然后输出经过清理的文件?

【问题讨论】:

    标签: php csv for-loop while-loop str-replace


    【解决方案1】:

    我没有测试过你的功能,但是你也可以使用iconv()来得到你想要的结果。

    只需替换:

    echo replaceAccents( $data[$c] )."\n";
    

    与:

    echo iconv('UTF-8','ASCII//TRANSLIT', $data[$c]) . "\n";
    

    An example using your data.

    【讨论】:

    • 这删除了重音字符之后的所有内容,包括重音字符,它不会替换它吗?
    • @IbrahimHafiji 它不应该:eval.in/864076。你的代码是什么样的,变量的内容是什么?
    猜你喜欢
    • 2020-12-19
    • 2011-03-23
    • 2015-09-05
    • 1970-01-01
    • 1970-01-01
    • 2019-11-10
    • 1970-01-01
    • 2015-05-04
    • 2019-01-29
    相关资源
    最近更新 更多