Страница 1 из 1

Поиск точного совпадения подстроки в файлах.

Добавлено: 2021-07-09 12:30:23
Vlad5503
Пытаюсь сделать скрипт на php который ищет значение(точное совпадение) в директориях которые указываешь. Т.е. например, ищем значение 9029029999 в директориях - лог апача, это httpd-access.log и в логе работающего скрипта нужного сайта.
Вот кусок скрипта который мучаю:
.....

Код: Выделить всё

   foreach ($files_in_dir as $num_file => $name_file)
        {
        $file=file($name_file);
        $found=false;
        foreach ($file as $line_num => $line_text)
            {
=>это строка 106            if (strpos($line_text, $line_search) !== false) {$found=true; $num_line[]=$line_num+1; $text_num_line[]=htmlspecialchars(trim($line_text), ENT_QUOTES);}
            }
        if($found==true)
            {
            echo '<b>'.$name_file.'</b>:<br>';
            $count=count($num_line);
            for($i=0;$i<=$count-1;$i++)
            {
            echo 'Found: line <b>'.$num_line[$i].'</b> ('.$text_num_line[$i].')<br>';
            }
            $num_line='';
            }
        }
При исполнении выдает результат в виде вывода строк, которые содержат искомое значение по первому пути, а по второму пути не выдает. И в логе апача вижу ошибку:

Код: Выделить всё

PHP Fatal error:  Uncaught Error: [] operator not supported for strings in /usr/local/www/pon/poisk3.php:106\nStack trace:\n#0 {main}\n  thrown in /usr/local/www/pon/poisk3.php on line 106
Прошу Вас подсказать правильное направление решить ошибку... Может есть другой вариант...
Буду премного благодарен за подсказку, помощь.

Поиск точного совпадения подстроки в файлах.

Добавлено: 2021-07-12 19:37:14
Demis
Здесь у Вас явно какой-то не стандартный символ/оператор "для строковых" попадается - "operator not supported for strings".
Я-бы попробовал, для начала, разложить однострочный кусок кода на строки, т.е. примерно так:

Код: Выделить всё

foreach ($file as $line_num => $line_text)
            {
	if (strpos($line_text, $line_search) !== false) 
	{
	$found=true; 
	$num_line[]=$line_num+1; 
	$text_num_line[]=htmlspecialchars(trim($line_text), ENT_QUOTES);
	}
            }
И посмотреть в какой именно строке будет эта ошибка.
Есть подозрение, что все упирается в "trim($line_text)", но не факт...