我正在使用西里尔语的保加利亚语字符串。
我想比较$words[$i]
(添加: $ words是一个字符串数组,$ words [$ i]是一个字符串)如果它包含来自$cyrillic_symbols
的符号
$cyrillic_symbols="абвгдежз"; //OK!
$siglesymb=mb_substr($words[$i],9,1,'UTF-8'); //OK! "д" letter received.
echo $siglesymb; //and д displayed in the browser, OK!
echo mb_strpos($cyrillic_symbols,$siglesymb,0,'UTF-8');
没有显示任何内容,因为我认为它是== false
。我不明白原因。
echo mb_strpos($cyrillic_symbols,"д",0,'UTF-8');
与上面相同,但结果不是false
,而是4,因为“абвгдежз”中的第五个位置。
总结果为:д4
。为什么呢?
为什么结果不是д44
?
任何想法如何制作д44
?
答案 0 :(得分:0)
适合我:
$cyrillic_symbols="абвгдежз";
$words = preg_split('/[ ,.;]+/', 'да работи да');
foreach($words as $word) {
for($i = 0; $i < mb_strlen($word,'UTF-8'); $i++) {
$siglesymb = mb_substr($word,$i,1,'UTF-8');
echo $siglesymb.' ';
var_dump( mb_strpos($cyrillic_symbols,$siglesymb,0,'UTF-8') );
echo ", ";
}
echo "<br>";
}
输出:
д int(4) , а int(0) ,
р bool(false) , а int(0) , б int(1) , о bool(false) , т bool(false) , и bool(false) ,
д int(4) , а int(0) ,
也许你输入了什么?
答案 1 :(得分:0)
我没有遇到任何问题;请与您的代码进行比较:
$cyrillic_symbols="абвгдежз"; //OK!
$words = array("абвгдабвгд"); // my test
$i = 0;
$siglesymb=mb_substr($words[$i],9,1,'UTF-8'); //OK! "д" letter received.
echo $siglesymb; //and д displayed in the browser, OK!
echo mb_strpos($cyrillic_symbols,$siglesymb,0,'UTF-8'); //4
echo mb_strpos($cyrillic_symbols,"д",0,'UTF-8'); //4
答案 2 :(得分:0)
这是一个解决方案。我永远不会猜到它会有所帮助,但它有所帮助......我实际上并不明白为什么......
$cyrillic_symbols="абвгд";
$cyrillic_for_display=iconv('cp1251','utf-8',$symbols_non_utf);//that's a solution!
echo $cyrillic_symbols; //rectangles are displayed
echo $cyrillic_for_display; //абвгд
P.S。在php文件之上是:
header ("Content-Type: text/html; charset=UTF-8");//yes, UTF-8.
据我所知,上述所有帖子都没有人有这样的问题。
此外,UTF-8在文件中无处不在(MySQL数据库中的某些字段除外,其中实际上是cp125,但我没有从那里获取任何数据,尽管它已连接)。
如果有人知道cp125出现的原因,请在此发表您的意见。
谢谢大家。无论如何你帮了我。