2015-10-16 3 views
1

Я пытаюсь сделать функцию поиска для своего сайта с помощью PHP. Прямо сейчас, у меня есть этот код для создания массива всех файлов в каталоге, который работает очень хорошо, но я ударил с помощью следующего шага. Я хочу, чтобы теперь список всех элементов в этом массиве содержал определенное слово (поиск пользователей), таким образом я могу что-то с ними сделать позже в HTML. Моя идея состояла в том, чтобы создать цикл, который запускает strpos для каждого элемента и перечисляет только те, для которых он находит совпадения. Я пробовал это, но это всегда ничего мне не давало. Это моя честная попытка:Список всех элементов в массиве, содержащих определенное слово в PHP

<?php 
    $search = "Pitfall"; 

    foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator('.')) as $filename) 
    { 
     if ($filename->isDir()) continue; 

     foreach ($filename as &$result) 
     { 
      $pos = strpos($result, $search); 

      if ($pos === true) { 
       echo "$result\n"; 
      } 
     } 
    } 
?> 

Спасибо за любую помощь

ответ

1

Я думаю, что ваш вопрос с вашей условно:

if ($pos === true)

strpos() не возвращает истину. Он возвращает позицию строки или false. См. docs. Вы можете использовать вместо этого:

if ($pos !== false)

Отредактировано:

RecusiveIteratorIterator не возвращает строку. Он возвращает объект. Здесь я типизирую объект так, чтобы он получал правильное имя файла. Оттуда вам не нужно снова перебирать, так как на данный момент это просто строка.

$search = "wp-config"; 

foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator('.')) as $filename) 
{ 
    $filename = (string) $filename; 

    if (is_dir($filename)) continue; 

    $pos = strpos($filename, $search); 

    if ($pos !== false) { 
     echo "$filename <br />"; 
    } 
} 
+0

Имейте ввиду, что использование '===' в отличие от '==' будет проверять, являются ли значения И тип равными, поэтому значение true здесь не работает. 'if ($ pos == true)' будет оценивать. – Chris

+0

Хммм, попробовал, но все тот же результат. Nothing echos – Syllith

+0

Это может быть потому, что ничего не соответствует ... Мы не можем видеть ваши данные, поэтому мы не можем быть уверены. Если бы вы могли предоставить данные, найденные в '$ filename' – Chris