for($i = 0; $i < 60; $i++)
{
foreach($lines as $line_num => $line)
{
if(strpos(strtolower($items[$i]['username']), strtolower($line)) !== false)
{
var_dump("found");
}
}
}
我在 $items 数组中有 60 个名称,对于每个名称,我都会将其与包含我正在使用 strpos 查找的名称的另一个数组进行检查,但是它似乎从未检测到该字符串,即使它正在测试以下内容:
ashley.gram20:阿什利<- Does not show found.
很明显应该找到“Ashley.gram20”吧?但它从来没有这样做过?
谢谢!
解决了!感谢@TML 给了我正确方向的推动,这只是字符串末尾的一些看不见的字符! (不是空格,我已经清理了字符串)。
现在使用:
rtrim($target);
虽然会修剪字符串中的所有空格和非标准字符,但您知道的越多!
我的猜测是你应该使用以下代码:
for($i = 0; $i < 60; $i++)
{
foreach($lines as $line_num => $line)
{
if(strpos(strtolower($line), strtolower($items[$i]['username'])) !== false)
{
var_dump("found");
}
}
}
对于
strpos
,您需要将第一个 haystack 和 needle 作为第二个参数,而不是像您可能所做的那样相反。
当然你可以使用
stripos
代替strpos
:
for($i = 0; $i < 60; $i++)
{
foreach($lines as $line_num => $line)
{
if(stripos(line, $items[$i]['username']) !== false)
{
var_dump("found");
}
}
}
你几乎猜对了,但是你忘记了一个 foreach,所以 $line 仍然是一个数组而不是一个字符串。
<?php
$lines = array(array('Test','Monk','donky.monster'));
$items = array(array('username' => 'donky'),array('username' => 'Test'));
foreach($items as $item)
{
foreach($lines as $line_num => $line)
{
foreach($line as $name){
if(strpos(strtolower($item['username']), strtolower($name)) !== false)
{
var_dump("found");
}
}
}
}
?>