Strpos не соответствует еврейской строке

Я пытаюсь найти, существует ли строка на иврите, используя strpos, Я старался mb_strposи попробовал !strpos, четное similar_text() но ничего не получалось.

Есть идеи?

Код:

$data1 = file_get_contents('hebrewtext.txt');
$data2 = "אבגדהוזחטיכל";

if(strpos($data1, $data2) === FALSE) {
# Hebrew string does not exists
}

else {
# Hebrew string exists
}

Благодарю.

1

Решение

Во-первых, по крайней мере, вы должны написать свой код PHP в UTF-8, PHP не полностью поддерживает, кроме ASCII а также UTF-8,

Если вы также написали hebrewtext.txt в UTF-8Просто используйте strpos, Хотя возвращаемое смещение основано на байтах, а не на символах, это не проблема, если вы просто сравните его с FALSE,

<?php
$data1 = file_get_contents('hebrewtext.txt'); // This file is written in UTF-8
$data2 = "אבגדהוזחטיכל"; // This code is written in UTF-8
var_dump(strpos($data1, $data2) !== FALSE)); // Contains? -> It'll work

В противном случае есть два решения.

  1. Задавать mb_internal_encoding а также mb_strpos вместо strpos
  2. Конвертировать содержимое hebrewtext.txt в UTF-8 с помощью mb_convert_encoding
1

Другие решения

Используйте mb_strpos () и установите кодировку в UTF-8 с помощью mb_internal_encoding ().

0

В php поддерживаются только строковые функции ASCII. Итак, вам нужно будет использовать другую функцию с именем mb_strpos (для многобайтовых strpos). Кроме того, поскольку вам приходится иметь дело с не-ASCII-символами, я бы порекомендовал заменить любые строковые функции, которые вы используете в своем коде, эквивалентными в многобайтовых строковых функциях. библиотека. (что является стандартным)

0
По вопросам рекламы [email protected]