使用PHP或Bash从CSV文件中删除copywrite符号(特殊字符)

使用PHP或Bash从CSV文件中删除copywrite符号(特殊字符),php,bash,csv,sed,Php,Bash,Csv,Sed,我有一个CSV文件,其中包含数千个带有®或™ 在标题中 这导致我的导入程序在到达这些符号时停止读取该行 我需要删除它们或将它们更改为(TM)、(R)等 我有以下PHP文件,它替换了文本,但不适用于符号: $fname = "/../var/www/vhosts/website.co.uk/httpdocs/folder/file.csv"; $fhandle = fopen($fname,"r"); $content = fread($fhandle,filesize($fname)); $c

我有一个CSV文件,其中包含数千个带有®或™ 在标题中

这导致我的导入程序在到达这些符号时停止读取该行

我需要删除它们或将它们更改为(TM)、(R)等

我有以下PHP文件,它替换了文本,但不适用于符号:

$fname = "/../var/www/vhosts/website.co.uk/httpdocs/folder/file.csv";
$fhandle = fopen($fname,"r");
$content = fread($fhandle,filesize($fname));

$content = str_replace("red", "yellow", $content); --------//This works!
$content = str_replace("®", "r", $content);        -------//This doesnt!

$fhandle = fopen($fname,"w");
fwrite($fhandle,$content);
fclose($fhandle);
我用过sed,但运气不好

sed 's/[™®]//g' /../var/www/vhosts/website.co.uk/httpdocs/folder/file.csv > /../var/www/vhosts/website.co.uk/httpdocs/folder/file.csv

试过了,只输出一个空白的csv文件
perl-pe's/®/(r)/g'
似乎对我有用。如果没有,可能是一些字符集/编码问题?另一种想法是,您可以尝试在PHP中对数据进行处理,看看它是否能识别符号。为Perl添加-C7参数会迫使它在STDIN、STDOUT和STDERR上使用UTF-8,如
Perl-C7-pe's/®/(r)/g'
中所示。PHP方法也适用于我,它提供了类似于
abc®;def™ghi
(可以在另一个替换中使用)。嗯,不确定为什么它不工作,因为它没有抛出任何错误。如何在上面的php脚本中使用htmlentities(),而不是str_replace()。您将使用
$content=HTMLEntities($content)