我试图使用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
}
感谢。
答案 0 :(得分:1)
首先,至少你必须在UTF-8
中编写PHP代码。除ASCII
和UTF-8
外,PHP不完全支持。
如果您还在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
醇>
答案 1 :(得分:0)
在php中,字符串函数仅支持ASCII。因此,您需要使用另一个名为mb_strpos的函数(用于Multi Byte strpos)。此外,由于您必须处理非ASCII字符,因此我建议将您在代码中使用的任何字符串函数替换为多字节字符串函数library中的等效函数。 (这是标准的)
答案 2 :(得分:0)
使用mb_strpos()并使用mb_internal_encoding()将编码设置为UTF-8。