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实体填充。您必须调查数据来自何处,并查看它为什么向您发送实体,或者是否将字符串转换为实体。