strpos()stripos()问题php

时间:2017-09-01 09:45:07

标签: php arrays strpos stripos

我知道这是一个常规问题而且我不是想加入一群不知道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"

当我回显所有值时,似乎有匹配,但它不会被添加到数组中。

打印出来:Microplateleolvasók.jpg=&gt;微孔板leolvasók

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

知道为什么不匹配?

提前致谢!

1 个答案:

答案 0 :(得分:2)

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

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