Стрпос никогда не сможет найти иголку в стоге сена? (Используя! ==)

for($i = 0; $i < 60; $i++)
{
foreach($lines as $line_num => $line)
{
if(strpos(strtolower($items[$i]['username']), strtolower($line)) !== false)
{
var_dump("found");
}
}
}

У меня есть 60 имен в массиве $ items, для каждого имени я проверяю его по другому массиву, содержащему имена, которые я ищу с помощью strpos, однако он НИКОГДА не обнаруживает строку, даже несмотря на то, что он проверяет следующее:

ashley.gram20: Эшли <- не показывает найден.

Совершенно ясно, что «Ashley.gram20» наверняка должен был найти? но это никогда не делает?

Спасибо!

0

Решение

Решено! Спасибо @TML за то, что он дал мне толчок в правильном направлении, это был просто какой-то невидимый символ в конце строки! (Не пробел, который я уже очистил строку).

Теперь с помощью:

rtrim($target);

Пока обрежет все пробелы и нестандартные символы из строки, чем больше вы знаете!

1

Другие решения

Я думаю, вы должны использовать следующий код:

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 вам нужно иметь сначала стог сена а также игла как второй параметр, а не противоположный, как вы, вероятно, сделали.

Конечно, вы могли бы использовать stripos вместо strpos:

for($i = 0; $i < 60; $i++)
{
foreach($lines as $line_num => $line)
{
if(stripos(line, $items[$i]['username']) !== false)
{
var_dump("found");
}
}
}
0

Вы почти все поняли правильно, но вы забыли один foreach, поэтому $ линия были все еще массив, а не строка.

<?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");
}
}
}
}
?>

Демо-версия: https://eval.in/201652

-1
По вопросам рекламы [email protected]