gpt4 book ai didi

带有特殊字符的 PHP strtolower(如 : äüö)

转载 作者:行者123 更新时间:2023-12-05 08:58:05 25 4
gpt4 key购买 nike

我在 PHP 将包含特殊字符的字符串转换为小写时遇到问题,在这种情况下尤其是变音符号,因为我正在处理名称。这里的用例是我在一个数组中搜索名称,其中数据库中已经存在的名称都以小写形式显示(实际上由 strtolower 完成,效果很好)。

问题是,特殊字符转换为小写字母失败,这很奇怪,因为它使用数据库中的名称,并且在这两种情况下输入都是 utf8。我什至先用 mb_detect_encoding($name) 检查了编码,它返回 UTF-8

    // All names from the database are read into an array, mysql charset is utf8
foreach($db_names as $namerow) {
$name = $namerow['lastname'] .' '. $namerow['firstname'];
$allnames[strtolower($name)] = $namerow['id']; // works
}

// Get data from a webservice which return utf-8 encoded data (i checked that)
$data = ...;

// Test the utf-8
header('Content-Type: text/html; charset=utf-8');
print_r($allnames); // everything is correct here
var_dump(strtolower($data['name'])); // Output i.e. rÖmer - notice still uppercase char
var_dump(mb_strtolower($data['name'])); // Output with strange ? character - r?mer
var_dump(mb_detect_encoding($data['name'])); // Output: UTF-8

最佳答案

调用mb_internal_encoding首先告诉多字节函数你希望它们在什么编码上运行:

mb_internal_encoding('UTF-8');
var_dump(mb_strtolower($data['name']));

或者直接将编码参数传递给mb_strtolower:

var_dump(mb_strtolower($data['name'], 'UTF-8'));

关于带有特殊字符的 PHP strtolower(如 : äüö),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26820301/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com