Я пытаюсь найти, существует ли строка на иврите, используя 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
}
Благодарю.
Во-первых, по крайней мере, вы должны написать свой код 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
В противном случае есть два решения.
mb_internal_encoding
а также mb_strpos
вместо strpos
hebrewtext.txt
в UTF-8
с помощью mb_convert_encoding
Используйте mb_strpos () и установите кодировку в UTF-8 с помощью mb_internal_encoding ().
В php поддерживаются только строковые функции ASCII. Итак, вам нужно будет использовать другую функцию с именем mb_strpos (для многобайтовых strpos). Кроме того, поскольку вам приходится иметь дело с не-ASCII-символами, я бы порекомендовал заменить любые строковые функции, которые вы используете в своем коде, эквивалентными в многобайтовых строковых функциях. библиотека. (что является стандартным)