Php函数strstr在使用变音符号时不转换第一个字符


Php function strstr does not convert first char when with diacritics

我有UTF-8格式的HTML和上传表单。上传后,我在PHP中使用

转换给定的文件名

$filename = strtr ($filename, $conversion_chart);

在Mac上使用Safari或Chrome时,它看起来像是在工作,但是当文件名称中的第一个字符具有变音符号(如, Š, Ž…)时,此字符不会被转换并且在输出中丢失。所有其他字符都被正确转换。它是这样工作的:

"Ušiak.doc" -> "usiak.doc" -正确转换

"Šiak.doc" -> "iak.doc" -转换错误

更新:最近我发现从Firefox转换总是很糟糕。如:"uŠiak.doc" -> "uSÌiak.doc"

下面是实际的php代码:http://test.awaldorf.cz/inc/prihlaska.php.noparse

和HTML: http://test.awaldorf.cz/prihlasky.php

您的PHP源代码必须是正确的UTF8编码。因为它不是(没关系,它在你的编辑器中看起来很好,它不是UTF8)你的$conversion_chart是坏的。您应该正确使用UTF8作为源文件,或者用数字代码替换Š以避免编码问题