我在 mysql 表中有一个阿拉伯语关键字,例如
*#1591; *#1610; *#1585;*#1575;*#1606
// 请考虑用 & 代替 * ,带有 '&' 的值会自动转换为阿拉伯语。
Mysql表编码:utf8_general_ci
我从外部资源示例 twitter 中获取一些字符串。
我想将关键字与我收到的推文相匹配。
$tweet = 'وينج وأداسي الاماراتية توقعان اتفاقية تعاون لتوفير أنظمة الطائرات بدون طيا';
$keyword = '*#1591; *#1610; *#1585;*#1575;*#1606'; //From db
$status = strpos ($tweet, $keyword)
$status 始终返回 false。
我已经检查过 utf8_encode(), utf_8_decode() , mb_strpos() 没有任何运气。
我知道在比较之前需要将两个字符串转换为一种通用格式,但我需要转换哪种格式?
请帮我解决这个问题。
由于阿拉伯符号是使用多字节字符编码的,因此您必须使用支持此类约束的函数:grapheme_strpos http://php.net/grapheme_strpos and mb_strpos http://php.net/mb_strpos(以该顺序)。
使用它们代替普通的旧 strpos 就可以解决问题。
另外,请记住,您可能需要在使用之前检查其可用性,因为并非所有托管环境都启用它们:
if (function_exists('grapheme_strpos')) {
$pos = grapheme_strpos($tweet, $keyword);
} elseif (function_exists('mb_strpos')) {
$pos = mb_strpos($tweet, $keyword);
} else {
$pos = strpos($tweet, $keyword);
}
最后但并非最不重要的一点是,检查文档以了解函数采用的不同参数,作为字符串使用的编码。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)