2015-12-29 4 views
0

Мне нужно проверить, существует ли строка $ string в одном из файлов в папке. Ниже есть то, что у меня есть, но это явно не работает. Что мне не хватает?Найти строку в нескольких файлах

foreach (glob($path . 'foo/bar/*.*') as $file) { 

    if (strpos(file_get_contents($file), $string) !== false) { 
    //** found 
    } else { 
    //** not found 
    } 
} 
+0

Я не понимаю, почему это не должно работать. Вы проверили путь? ('print_r (glop ($ path. 'foo/bar /*.*'));' <- Проверьте, находятся ли ваши файлы в этом массиве) – Rizier123

+0

data/user /*.* пусто, данные/пользователь/печатает путь - без файлов - и да, папка есть, есть файлы и путь действителен –

+0

Тогда ваш путь неправильный, иначе вы должны иметь файлы в массиве. Пожалуйста, покажите нам свою файловую структуру, где находится этот кодовый скрипт и где находятся файлы. – Rizier123

ответ

0

Вы уверены, что все ваши файлы включают расширение? Вы можете попробовать

glob($path . 'foo/bar/*') 

и посмотреть, работает ли это.

Кроме того, если вы используете Windows, вы должны использовать обратную косую черту (\) вместо косой черты (/). Вы можете использовать константу DIRECTORY_SEPARATOR, чтобы позволить PHP автоматизировать ее для вас.

glob($path . 'foo' . DIRECTORY_SEPARATOR . 'bar' . DIRECTORY_SEPARATOR . '*.*') 

Вы также уверены, что $ path заканчивается косой чертой?

+0

Немного поболтал и, наконец, оказался с glob ('./ data/user/*') Позор я сам это понял, но, тем не менее, я соглашусь на ваш ответ;) Am on * nix в порядке, но некоторые видоискатели могут найти DIRECTORY_SEPARATOR полезно, спасибо. –

+0

@PHClaus Не принимайте ответ, если он не решил вашу проблему. Вы можете написать свой собственный ответ и объяснить, в чем проблема. – Rizier123

Смежные вопросы