我知道这是一个常见的问题,我不想加入那些不知道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()的函数,它不应该计算在内。我的字符串在utf8 for $subCats数组中,对于$tmp数组,它是scandir提供给您的。该目录不受保护,它可以读写该文件。
知道为什么不匹配吗?
提前感谢!
发布于 2017-09-01 10:01:15
在leolvaso ó k != leolvasók中“o”的重音。基本上ó和́是不同的。
用你使用的字体,它们看起来可能是一样的。对我来说,在Firefox上,Linux下有一个细微的视觉差异。
https://stackoverflow.com/questions/45997432
复制相似问题