strpos在希伯来语中返回错误的位置

时间:2014-04-10 00:24:35

标签: php substring strpos stripos

我需要帮助...... 我有希伯来语php字符串,我想要搜索子字符串的位置。 我的代码:

$string = "אבגד הוזח טי";
$find = "הוזח";
$pos = strpos($string, $find);
echo $pos;

strpos找到了子串,但返回错误的位置值。 它返回$ pos值9而不是5。 为什么strpos不能用希伯来字符串? 你能帮帮我吗?

2 个答案:

答案 0 :(得分:3)

希伯来字符串使用多字节字符,因此每个“字符”可以是2个或更多字符长,而不是1,就像大多数基于拉丁字符一样。您可能希望为您的应用程序查看PHP Multibyte String Functions

答案 1 :(得分:2)

尝试使用mb_strpos。您必须使用 mb_internal_encoding 将内部字符编码设置为UTF-8

mb_internal_encoding("UTF-8");
$string = "אבגד הוזח טי";
$find = "הוזח";
$pos = mb_strpos($string, $find);
echo $pos; //5