我在 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和 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);
}
最后但并非最不重要的一点是,检查文档以了解函数采用的不同参数,如字符串使用的编码。
关于PHP 阿拉伯文文本使用 strpos 进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14935259/