【发布时间】:2018-10-09 23:44:34
【问题描述】:
我正在编写一个脚本,该脚本从 MySQL 数据库中为 $word 中的每个字母检索值。该脚本效果很好,但不适用于像 enye 这样的拉丁字符。
示例代码:
$word = "Cañones";
$letters = str_split($word);
print_r($letters);
$query = "SELECT GROUP_CONCAT(Alpha) AS Alpha,
GROUP_CONCAT(Letter_Box_Width) AS Letter_Box_Width
FROM Font_Krinkes
WHERE Alpha IN ('" . implode("','", $letters) . "')";
print_r 的输出
Array
(
[0] => C
[1] => a
[2] => ?
[3] => ?
[4] => o
[5] => n
[6] => e
[7] => s
)
PHP Notice: Undefined index: ?
PHP Notice: Undefined index: ?
在我看来,enye 被错误地从我的 $letters 数组中存储和检索。它作为问号被检索...然后,当然,问号值的查询失败,这就是我收到未定义索引错误的原因。如何处理数组中的这个 enye 字符?
在完成 cmets 之后,我意识到我的代码存在的问题不仅仅是 mb_str_split 问题。我仍然无法正确查询数据库。
非常感谢任何帮助。
【问题讨论】:
-
你的数据库编码和排序规则是什么?
-
UTF-8 和 utf8_bin 不确定这与数组有何关系。拉丁字符在数据库中存储良好。
-
哦,所以它们正确地存储在数据库中。但看起来 php 将它们视为有向图。不确定
str_split是否适用于多字节,您检查过the reference 吗? -
你是对的! “str_split() 在处理多字节编码的字符串时将分割成字节,而不是字符。”
-
This 似乎有效,下一个也有效