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» наверняка должен был найти? но это никогда не делает?
Спасибо!
Решено! Спасибо @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
вам нужно иметь сначала стог сена а также игла как второй параметр, а не противоположный, как вы, вероятно, сделали.
Конечно, вы могли бы использовать 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, поэтому $ линия были все еще массив, а не строка.
<?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