1

我在 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() 没有任何运气。

我知道在比较之前需要将两个字符串都转换为一种通用格式,但是我需要转换哪种格式?

请帮助我。

4

1 回答 1

2

由于阿拉伯符号是使用多字节字符编码的,因此您必须使用支持这种约束的函数:grapheme_strposmb_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);
}

最后但并非最不重要的一点是,检查文档中函数采用的不同参数,作为字符串使用的编码。

于 2013-02-18T11:34:20.623 回答