首页 > 解决方案 > 如何检查包含 HTML 字符的条目的数组?

问题描述

我有一个表示希腊字母的数组,表示为 HTML 字符串:

$alphabet = ["α", "β", "γ", "δ", ...]

类似的字符串变量存储在 MySQL 数据库(我正在使用mysqli)中并从中检索。但是,当我从数据库中检索$db_result其值的变量"α"并使用该函数检查它是否在$alphabet数组中in_array()时,它从未找到:

if( in_array($db_result, $alphabet) ){
    print_r("That's Greek to me!");
}
/* Result: Nothing ever prints */

如果我print_r()$db_result$alphabet,它们都打印相同的字符。也就是说,$db_result打印为 'α' 并$alphabet打印为Array ( [0] => α [1] => β [2] => γ ...).

在页面源代码中,$db_result 值显示为实际的希腊字母,而$alphabet数组条目是 HTML α。我并不关心显示,而是关心逻辑:我需要in_array()将 alpha 识别为 alpha

一旦从数据库中检索到值,编码肯定会有所不同"α",但我不知道什么或如何修复它。

标签: phpmysqlicharacter-encoding

解决方案


数据库结果是实际字符,因此将其转换为 HTML 实体进行检查:

if( in_array(htmlentities($db_result), $alphabet) ){
    print_r("That's Greek to me!");
}

推荐阅读