Как искать в нескольких файлах .php? - PullRequest
4 голосов
/ 26 августа 2011

У меня есть около 100 .php файлов в одном каталоге, и я ищу одну маленькую функцию, какой самый быстрый способ поиска по всему содержимому этих файлов?

[edit]

Я использую Windows 7 Ultimate / NuSphere PhpED.

Ответы [ 6 ]

6 голосов
/ 26 августа 2011

Попробуйте это:

<?php
function getFilesWith($folder, $searchFor, $extension = 'php') {

    if($folder) {
        $foundArray = array();
        // GRAB ALL FILENAMES WITH SUPPLIED EXTENSION
        foreach(glob($folder . sprintf("*.%s", $extension)) as $file) {
            $contents = file_get_contents($file);

            if(strpos($contents, $searchFor) !== false) {
                $foundArray[] = $file;
            }
        }

        if(count($foundArray)) {
            return $foundArray;
        } else {
            return false;
        }
    } else {
        return false;
    }
}

$matched_files = getFilesWith('path/to/folder', 'Looking for this');
?>
6 голосов
/ 26 августа 2011

Используйте ваши php-редакторы "найти в файлах".

Бесценный.

edit PHPNuSphere полностью поддерживает это. вам нужно выучить немного гугл фу брата.

Если ваш редактор не имеет этого, вам нужно переключиться как можно скорее. https://stackoverflow.com/search?q=php+editor

Find in files in Visual Studio

Find in files in Notepad++

4 голосов
/ 26 августа 2011

Установите cgywin - тогда вы можете использовать grep!

1 голос
/ 26 августа 2011
function search_in_dir( $dir, $str )
{
    $files = glob( "{$dir}/*.php" );
    foreach( $files as $k => $file )
    {
        $source = file_get_contents( $file );
        if( strpos( $source, $str ) === false )
        {
            unset( $files[$k] );
        }
    }
    return array_filter( $files );
}
$files = search_in_dir( 'dir/files', 'my string' );
0 голосов
/ 13 октября 2018

Я использую следующий код

<?php
$folder = 'folder';
echo '<p><b>We Find</b> in <span style="color:red">'. __DIR__ .'</span></p> ';

foreach (glob("$folder/*.php") as $filename) {

$file = file_get_contents($filename);

if( strpos( $file, 'text' ) === false ){
    echo '<span style="color:red">not found: </span>';
}else{
    echo '<span style="color:blue">found: </span>';
}

echo $filename.'<br>';

if (file_put_contents($filename, preg_replace("/text/", "new text", $file))) {

} else {
    echo "not found :(";
}
}

Создайте папку в пути к вашему коду
Поместите ваши файлы в эту папку
Файлы с вашим текстом отображаются синим цветом.Тогда тексты будут заменены

0 голосов
/ 26 августа 2011

Для Window я бы установил cygwin и использовал бы find или grep, но в случае неудачи

  • Установите всего командующего, используйте Alt + F7 для рекурсивного поиска.Также есть опция замены в нескольких файлах - http://www.ghisler.com Вам будет интересно, как вы когда-либо перемещались по вашей системе без нее

  • с помощью Notepad ++ вы можете открыть всефайлы и выполните обычный текстовый поиск, просто установите флажок «поиск по всем открытым файлам»

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...