Обработка каждого слова в файле

Задача
Необходимо что-нибудь сделать с каждым словом, находящимся в файле.

Решение
Прочитайте каждую строку с помощью функции fgets(), разделите строку на слова и обработайте каждое слово:

$fh = fopen('great-american-novel.txt','r') or die($php_errormsg);
while (! feof($fh)) {
if ($s = fgets($fh,1048576)) {
$words = preg_split('/\s+/',$s,-1,PREG_SPLIT_NO_EMPTY);
// обрабатываем слова
}
}
fclose($fh) or die($php_errormsg);

Обсуждение
Ниже показано, как определить среднюю длину слова в файле:

$word_count = $word_length = 0;
if ($fh = fopen('great-american-novel.txt','r')) {
while (! feof($fh)) {
if ($s = fgets($fh,1048576)) {
$words = preg_split('/\s+/',$s,-1,PREG_SPLIT_NO_EMPTY);
foreach ($words as $word) {
$word_count++;
$word_length += strlen($word);
}
}
}
}
print sprintf("The average word length over %d words is %.02f characters.",
$word_count,
$word_length/$word_count);

Обработка каждого слова происходит по-разному, в зависимости от того, как определяется понятие «слово».


Программа в этом рецепте для Perl-совместимых регулярных выражений использует пробельный метасимвол \s, который может быть пробелом, символом табуляции,
символом новой строки, возвратом каретки и переводом страницы.

Perl-диалект регулярных выражений содержит специальный квантификатор для границы слова, который сравнивает между собой словарные символы (буквенно-цифровые и символ подчеркивания) и не словарные символы (какие-нибудь другие). Разграничение слов посредством \b вместо \s существенно изменяет трактовку слов, содержащих знаки пунктуации. Выражение 6 o'clock будет состоять из двух слов, если для их разделения будут использоваться пробельные символы (6 и o'clock), и оно же распадается на четыре слова, если они разделяются символом границы слова (6, o, ' и clock).

Оцените статью: (0 голосов)
0 5 0

Статьи из раздела PHP на эту тему:
Блокировка файла
Выбор случайной строки из файла
Запись в несколько файловых дескрипторов одновременно
Запись в стандартный поток вывода
Непосредственная модификация файла без временной копии

Вернуться в раздел: PHP / 18. Файлы