我正在使用wpallimport
从xml中以希腊语导入一些类别。我正在使用一些自定义功能,以便通过使用存储原始类别和目标类别的数据库表来进行某些类别映射。
例如:
Κατηγορία α | Κατηγορία β
问题是,当我尝试将xml:Κατηγορία α
中的类别与数据库表Κατηγορία α
中的类别进行比较时,即使它们看起来并不相同。我做了strlen
,发现xml的字符串长度比看起来的大。经过进一步的调查,我发现如果我从每个字符的xml中回显字符串,我会得到ascii代码。
因此echo $category_from_xml[0];
返回&
(来自希腊字母Κ
的字母的表示:Κ
),而echo $category_from_database[0];
返回Κ
。
如何正确比较这两个字符串?
示例 数据库包含以下值: (数据库排序规则utf8_General_ci)
origin_cat_desc | target_cat_desc
---------------------------------------------------
Κινητά Τηλέφωνα > Maxcom | Κινητά & Tablet > Maxcom
这是我要解析的XML的一部分:
<family el="Κινητά Τηλέφωνα" en="Mobile Phones"/>
<group el="Maxcom" en="Maxcom"/>
最后这就是我尝试比较两个字符串的方法:
1
$path = {family}.' > '.{group};
function customCompare($fromDatabase,$path){
return ($fromDatabase == $path); //strcmp fails too
}
2
$path = {family}.' > '.{group};
function customCompare($fromDatabase,$path){
$stringToHex = json_encode($fromDatabase);
$strTest = str_replace('\u0','&#x',$stringToHex);
$strTest = str_replace(' ','',$strTest);
$path='"'.$path.'"';
$path = str_replace(' ',$path);
$removeSemicolon = str_replace(';',htmlspecialchars($path,ENT_QUOTES));
$k = htmlspecialchars($strTest,ENT_QUOTES);
if($k==$removeSemicolon){
echo "same";
}
}
当我按字符char对其进行回显时,这是数据库中“ΚινητάΤηλέφωνα> Maxcom”的值:
"Κινητά Τηλέφωνα > Maxcom"