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查找,但是它似乎从未检测到字符串,即使它&# 39;测试以下内容:
ashley.gram20:ashley&lt; - 找不到。
很明显应该找到&#39; Ashley.gram20&#39;一定?但它永远不会吗?
谢谢!
答案 0 :(得分:1)
解决!感谢@TML让我在正确的方向上轻推,只是字符串末尾的一些隐形字符! (不是空间,我已经清理了它的字符串。)
现在使用:
rtrim($target);
虽然会从字符串中修剪所有空格和非标准字符,但您知道的越多!
答案 1 :(得分:0)
我的猜测是你应该使用以下代码:
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");
}
}
}
答案 2 :(得分:-1)
你几乎把它弄好了,但你忘记了一个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");
}
}
}
}
?>