php - PHP:来自xml的希腊字符串转换为ascii并且没有比较
问题描述
我wpallimport
用来从 xml 中导入一些希腊语类别。我正在使用一些自定义函数,以便通过使用存储原始类别和目标类别的数据库表来进行一些类别映射。
例如:
Κατηγορία α | Κατηγορία β
问题是,当我尝试将 xml: 中的类别Κατηγορία α
与数据库表中的类别进行比较时,Κατηγορία α
即使它们看起来相同,但它们并不相同。我做到了strlen
,我看到 xml 的字符串长度比看起来要大。通过进一步调查,我发现如果我从每个字符的 xml 中回显字符串,我会得到 ascii 代码。
所以echo $category_from_xml[0];
返回&
(来自希腊Κ
字母的 ascii 表示:)Κ
而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";
}
}
这是数据库中“Κινητά Τηλέφωνα > Maxcom”的值,当我逐字符回显它时:
"Κινητά Τηλέφωνα > Maxcom"
解决方案
推荐阅读
- php - 当我使用 jquery 将数据添加到表价格和未定义项目时
- c - 无法在将字符串的每个单词写入新行的代码中找到错误
- android - OntouchEvent() 方法有什么用?
- php - PHP:忽略错误并继续而不尝试捕获
- macos - 在 SwiftUI 中禁用 macOS 对焦环
- php - php-curl 请求返回被拒绝
- spring - 从另一个休息 API 调用一个 Spring Boot 休息 API 时出错
- ibm-watson - Watson 助手 JSON 编辑器中的变量模式
- webpack - Webpack 与 ES6 模块
- ios - 如何在 Swift 中更改 UISearchBar 的插入符号/光标大小?