尝试将文件上传到我的网络服务器时,我无法捕捉字符ö,ä和ü。
$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
。
答案 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
}