我有一个数组,表示以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
一旦从数据库中检索到值"α"
,编码就必须有所不同,但是我不知道该如何解决。
答案 0 :(得分:1)
数据库结果是实际字符,因此将其转换为HTML实体以进行检查:
if( in_array(htmlentities($db_result), $alphabet) ){
print_r("That's Greek to me!");
}