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

И всё прочее, что касается HTML
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Vlad5503
сержант
Сообщения: 221
Зарегистрирован: 2010-03-25 5:41:41

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

Непрочитанное сообщение Vlad5503 » 2021-07-09 12:30:23

Пытаюсь сделать скрипт на 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
Прошу Вас подсказать правильное направление решить ошибку... Может есть другой вариант...
Буду премного благодарен за подсказку, помощь.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Demis
старшина
Сообщения: 427
Зарегистрирован: 2015-05-25 14:36:32

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

Непрочитанное сообщение Demis » 2021-07-12 19:37:14

Здесь у Вас явно какой-то не стандартный символ/оператор "для строковых" попадается - "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)", но не факт...