strpos() stripos() 问题 php

strpos() stripos() problems php

我知道这是一个常规问题,我不想加入那些不知道 strpos() returns 字符串位置的人,如果你想比较无论是否找到,您都必须使用 === 或 ==!比较.

我的问题是,strpos每次都很好用,但现在好像有问题,我找不到,可能是我看的时间太长了。

我的代码是这样的:

$tmp = scandir("img/products");
$productImgs = array();

foreach ($tmp as $key => $value) {
    foreach ($subCats as $_subItem) {
        $_tmp = $_subItem["SUB_CAT"];
        echo $value." => ".$_tmp."<br>";

        if (strpos(rtrim($value), rtrim($_tmp)) !== FALSE) {
            $productImgs[] = $value;
            echo "lol<br>";
        }
    }
}

它基本上将图片存储在 tmp 数组中,然后遍历所有 subCats 数组以查看是否存在匹配项。例如:

$_subItem["SUB_CAT"] = "Microplate leolvasók"  
$value = "Microplate leolvasók.jpg"

当我回显所有值时,似乎有一个匹配项,但它没有被添加到数组中。

打印出来:Microplate leolvasók.jpg => Microplate leolvasók

除了 .jpg 结尾之外,我似乎没有发现这两个字符串之间的区别,但由于 strpos() 的功能,它不应该算在内。对于 $subCats 数组,我的字符串是 utf8,对于 $tmp 数组,这是 scandir 给你的。目录没有保护,它,和文件可以读写。

知道为什么不匹配吗?

提前致谢!

leolvasók != leolvasók 中 'o' 的重音。基本上 ó 是不同的。

使用您使用的字体,它们看起来可能是一样的。对我来说,在 Firefox 上,在 Linux 下有轻微的视觉差异。