无法捕捉角色ü,ö和ä

时间:2017-03-22 14:40:36

标签: php html

尝试将文件上传到我的网络服务器时,我无法捕捉字符ö,ä和ü。

$s = $_FILES['title']['name'];
var_dump($s); // returns string(11) "hellö.PDF"
var_dump(strpos($s, 'h') !== false); // returns bool(true)
var_dump(strpos($s, 'e') !== false); // returns bool(true)
var_dump(strpos($s, 'l') !== false); // returns bool(true)
var_dump(strpos($s, 'ö') !== false); // returns bool(false)

我的页面标题包含<meta charset="utf-8">

这里有什么问题?

修改:

即使var_dump(mb_strpos(utf8_encode($s), 'ö') !== false);返回false

2 个答案:

答案 0 :(得分:0)

如果你的文本编辑器正在创建Unicode utf-8文件,这可能会有效。 不确定文件名是否默认为utf-8。

<?php
$s = "äöüÄÖÜ";
var_dump(mb_strpos($s, 'ö') !== false);
?>

答案 1 :(得分:0)

你可以用UTF-8

包装字符串和字符
$r = utf8_encode("hellö");
echo strpos($r, utf8_encode('ö')); // 4

要查找变音符号,最好使用正则表达式(正则表达式):

echo hasUmlauts(utf8_encode("Händel, Hölle über")); // true
echo hasUmlauts("Händel, Hölle über"); // true
echo hasUmlauts(utf8_encode("HÄNDEL, HÖLLE ÜBER")); // true
echo hasUmlauts("HÄNDEL, HÖLLE ÜBER"); // true
echo hasUmlauts("Something here yadda yadda"); // false

function hasUmlauts($string) {
    return preg_match("/[ÄäÖöÜü]+/", $string);
}

您的用法是:

if (hasUmlauts($_FILES['title']['name'])) {
    // If true
} else {
    // If false
}