从字符串中删除.

aus*_*lis 4 php id3

我正在尝试批量阅读ID3数据.在某些曲目上,ÿþ出现.我可以删除前两个字符,但这会伤害没有它的曲目.

这就是我目前拥有的:

$trackartist=str_replace("\0", "", $trackartist1);
Run Code Online (Sandbox Code Playgroud)

任何建议都会很棒,谢谢!

Mar*_*oij 8

ÿþ是UTF-8中的0xfffe; 这是UTF-16中的字节顺序标记.您可以使用iconv或将您的字符串转换为UTF-8 mb_convert_encoding():

$trackartist1 = iconv('UTF-16LE', 'UTF-8', $trackartist1);

# Same as above, but different extension
$trackartist1 = mb_convert_encoding($trackartist1, 'UTF-16LE', 'UTF-8');

# str_replace() should now work
$trackartist1 = str_replace('ÿþ', '', $trackartist1);
Run Code Online (Sandbox Code Playgroud)

假设$trackartist1始终为UTF-16LE; 检查ID3标签库的文档,了解如何获取标签的编码,因为对于不同的文件可能会有所不同.您通常希望将所有内容转换为UTF-8,因为这是PHP默认使用的内容.