如何检查包含HTML字符的条目的数组?

时间:2018-12-13 21:21:25

标签: php mysqli character-encoding

我有一个数组,表示以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_resul t值显示为实际的希腊字母,而$alphabet数组条目为HTML α。我对显示的关注程度不如逻辑:我需要in_array()才能将alpha识别为alpha

一旦从数据库中检索到值"α",编码就必须有所不同,但是我不知道该如何解决。

1 个答案:

答案 0 :(得分:1)

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

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