Лекции     Книги     Рефераты    
Диплом, курсовая на заказ

Поиск в файле…

news date мая.20.2008    categories Web-программирование > PHP    comments (3)

Многие часто задают вопросы типа – “А как найти в файле…” или – “найти в файле и вывести…”. В ходе этого урока я всё вам подробно расскажу и опишу.
Для поиска существует, главная, основная функция – eregi и ereg. Это очень интересная функция и мы ей посвятим весь урок.
eregi – Эта функция идентична ereg () за исключением того, что это функция в отличие ereg игнорирует тип регистра символов.

Начнем “искать”:

<?php
$string = ‘XYZ’;
if (eregi(‘z’, $string)) {
echo “‘$string’ contains a ‘z’ or ‘Z’!”;
}
?>

Этот код взят из мануала. Он просто ищет “z” в тексте “XYZ”. Для поиска в файле чуть модернизируем этот код и за место текста подставим функцию:

file_get_contents(‘text.txt’);

Эта функция в данном случае получит содержимое файла text.txt.

Теперь применим ее к нашему поиску в файле и получим следующее:

<?
$string=file_get_contents(‘text.txt’);

if(eregi(“Бла-бла-бла”,$string))
{
print(‘Есть’);
}

else
{
print(‘Нет’);
}
?>

Если файл будет содержать “Бла-бла-бла” то на экран выведется “есть”, если нет то соответственно “Нет”.
Теперь тоже самое, только со строгим регистром букв:

<?
$string=file_get_contents(‘text.txt’);

if(ereg(“Бла-бла-бла”,$string))
{
print(‘Есть’);
}

else
{
print(‘Нет’);
}
?>

Как видно отличие только в eregi и ereg.
Иногда нужно найти слово в файле и вывести всю строку или несколько строк, если слов найдено несколько в разных строках. Для такой операции мы будем использовать функцию работы с циклом и массивами – foreach.

<?
$arr = file(“text.txt”);
foreach ($arr as $item)
{
if (eregi(“Ab”, $item))
print $item.”<br />”;
}
?>

Этот код ищет “Ab” в файле, и отображает все строки, содержащие эти знаки.

Если файл имеет структуру с разделяющими знаками типа :: или …, то можно искать в любой из частей этой строки и отобразить любую часть этой строки. То есть, например файл выглядит так:

Имя::Дата::Время::Сообщение
Имя::Дата::Время::Сообщение
Имя::Дата::Время::Сообщение
Имя::Дата::Время::Сообщение

И нам надо найти сообщение, содержащее определенное слово, а вывести автора этого сообщения. Для этого нужно использовать функцию explode. Эта функция разбивает строки на подстроки. Применим ее к данной ситуации и получим:

<?
$arr = file(“text.txt”);
foreach ($arr as $item)
{
$parts = explode(‘::’, $item);
if (eregi(“acc”, $parts[3])) print $parts[0].”<br />”;
}
?>

Обратите внимание, что первая часть разбитой строки является $parts[0], именно 0 а не 1.

Ну это главное, что я хотел рассказать на этом уроке и я надеюсь, что всё было понятно…

Новые функции:
ereg — ищет со строгим регистром
eregi – ищет с нестрогим регистром
foreach – функция цикла.
explode – Разбивает строку на подстроки
file_get_contents — Получить содержимое файла в виде одной строки


Обсуждения

3 комментариев к “Поиск в файле…”
  1. radist пишет:

    Пасиба – помогло

  2. Arsen пишет:

    В PHP 5.3.1 ereg уже не работает. Но есть её аналог preg_match

  3. Илларион пишет:

    Спасибо, как раз то, что искал. Просто пишу сейчас скрипт, который будет отслеживать изменения на сайте, поэтому функция поиска строки в файле была необходима.
    P.S. Все, почему-то, подхватили мою идею убирать поля для сайта на блогах. А сам я от этой идеи уже давно отказался ввиду того, что перестали комментировать.

Добавить комментарий

Вы должны войти



© 2009 - 2010 | Webteach.ru | Образовательный портал