Php mb_stripos不使用重音字符
我正试图使Php mb_stripos不使用重音字符,php,Php,我正试图使mb_stripos与重音字符一起工作,但我找不到任何方法 $word = "leilao"; $text = "LeiLao LEilões lllleeil"; $result = mb_stripos($text, $word); //works $word = "leilão"; $text = "LeiLão LEilões lllleeil"; $result = mb_stripos($text, $word); //doesn't works 我选中了mb\u in
mb_stripos
与重音字符一起工作,但我找不到任何方法
$word = "leilao";
$text = "LeiLao LEilões lllleeil";
$result = mb_stripos($text, $word);
//works
$word = "leilão";
$text = "LeiLão LEilões lllleeil";
$result = mb_stripos($text, $word);
//doesn't works
我选中了mb\u internal\u encoding()
,并设置为utf-8
有人能帮我吗
我需要的是在一个长文本中搜索是否存在一个关键字数组,然后返回true。但我也需要找到有口音的角色
还有别的办法吗
提前谢谢
[更新]
我发现问题出在哪里了。
我正在尝试从数据库中获取一些文本,它都设置为utf8
//after the query I assign like this:
$text = $rows[0]["description"];
如果我使用mb\u detect\u编码
我得到的结果是ASCII
编码。
没有任何功能可以改变这一点!
我尝试了这一切,iconv
,mb\u convert\u encode
,utf8\u encode
,但结果总是ASCII
。
我需要匹配重音字符/单词,但结果总是0。你确定你的源代码文件保存为UTF-8吗?@Sven实际上我不确定了,我尝试使用
mb\u detect\u编码
并返回ASCII而不是UTF-8。你必须获取代表你看到的字符的字节。您可以为此滥用urlencode()
函数-它会将URL中不允许的所有其他特殊字符转换为百分比十六进制表示。这将帮助您识别字符串中的字节,并且您可能会发现您真正使用的编码。请注意,自动检测编码不可能正确编码,这始终是一个猜测,因为您只有字节,根据编码的不同,它们意味着不同的东西。@Sven这是一个好主意,但仍然不起作用。。例如,在文本中,我有单词única
,如果我使用$text\u encoded=urlencode($text)
这个单词被编码为%26uacute%3Bnica
,$word=“única”
被编码为%C3%BAnica
%26
是符号和,“uacute”是“ú”的实体名称,%3B是分号。这意味着在$text
中有一个htmlentities()
版本的字符串,而不是unicode。因此,如果$text来自数据库,则该数据库不包含UTF-8,而是由html实体填充。您必须调查数据来自何处,并查看它为什么向您发送实体,或者是否将字符串转换为实体。