0

我知道这是一个常规问题,我不想加入不知道 strpos() 返回字符串位置的人群,如果你想比较是否找到它,你必须使用 === 或 ==! 比较。

我的问题是,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 给你的。该目录不受保护,它和文件可以读写。

知道为什么不匹配吗?

提前致谢!

4

1 回答 1

2

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

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

于 2017-09-01T10:01:15.570 回答