读取CSV文件并使用PHP替换重音字符

时间:2017-09-19 09:07:01

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

我有一个包含数据的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);


}

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

如何读入文件,替换重音字符,然后输出已清理的文件?

1 个答案:

答案 0 :(得分:0)

我尚未测试您的功能,但您也可以使用iconv()来获取您要查找的结果。

只需替换:

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

使用:

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

An example using your data