Здравствуйте, задание: Написать функцию, которая выводит список файлов в заданной директории, которые содержат искомое слово. Директория и искомое слово задаются как параметры функции. Все написал правильно, загвоздка как я понимаю в функции preg_match(), которая должна искать соответствие регулярному выражению и возвращать 1 если соответствие есть, у меня возвращает везде ноль, хотя файл с таким текстом имеется, не могу понять в чем причина, может регулярное выражение составлено неправильно, хотя его проверял на сайте http://regexr.ru/ Ниже привожу полный код php:
<html>
<head>
<meta charset="utf-8"/>
<title>Задание 5</title>
<style>
</style>
</head>
<body>
<h3>5. Написать функцию, которая выводит список файлов в заданной директории,
которые содержат искомое слово.
Директория и искомое слово задаются как параметры функции.
</h3>
<form action="05.php" method="post" name="dir">
<h4>Задайте директорию для вывода списка файлов:</h4>
<p><lable><input type="radio" name="dir_name" value="first_dir" checked> Первая диреткория</lable></br>
<p><lable><input type="radio" name="dir_name" value="second_dir"> Вторая диреткория</lable></br>
<p><lable><input type="radio" name="dir_name" value="third_dir"> Третья диреткория</lable></p>
<p>
<lable>Искомое слово: </br><input type="text" name="search" value="один"></lable>
<input type="submit" value="Поиск" />
</p>
</form>
<?php
//Функция удаления слов из файла
function displayFilesListSearch ($dir, $search) {
$files = glob($dir."/*.txt"); //Находим все текстовые файлы в заданной директории
foreach ($files as $file){
//echo "$search </br>";
if (preg_match("/\s[$search]\s/ui" ,file_get_contents($file))){
echo $file;
};
};
};
//Услвоия выполения
if (array_key_exists('dir_name', $_POST) && strlen($_POST['dir_name'])){
displayFilesListSearch($_POST['dir_name'], $_POST['search']);
};
?>
</body>
</html>
P.S. Файл в соотвествующей директории создан и там присутствует искомое слово, проверял. Может дело в кодировке? В файле установил utf-8 без BOM.
Если я не ошибаюсь, у функции preg_match есть ограничение на количество принимаемых символов из источника 10000 символов.
Сама функция поиска у вас не совсем правильная: в том, что у вас сейчас есть вы ищите не слово, а просто набор каких-то букв в произвольном порядке, которые ограничиваются пробелами по сторонам. Я бы предложил сделать вот так:
if (preg_match("/\b($search)\b/msui", file_get_contents($file))){
echo $file;
};
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Есть база EAV с таблицами: product - продукты (ключ: product_id); params - параметры продуктов (ключи: product_id, param_id); value - значения параметров продуктов (ключ:...
Этот код почему-то удаляет все данные из файла и записывает новые при каждом вызове saveRow()
Можно ли через API по номеру человека узнать, в онлайне он сейчас или нет?