PHP взорвать функцию с file_get_contents? - PullRequest
1 голос
/ 02 мая 2011
   <?php
$str = "Hello world. It's a beautiful day.";
print_r (explode(" ",$str));
?>

Приведенный выше код печатает массив в качестве вывода.

Если я использую

<?php
$homepage = file_get_contents('http://www.example.com/data.txt');
print_r (explode(" ",$homepage));
    ?>

Однако он не отображает отдельные числа в текстовом файле в виде массива.

В конечном итоге я хочу прочитать цифры из текстового файла и распечатать их частоту. Data.txt имеет 100 000 номеров. Один номер в строке.

Ответы [ 5 ]

5 голосов
/ 02 мая 2011

Новая строка не пробел. Вы должны взорваться при соответствующей комбинации символов новой строки. Например. для Linux:

explode("\n",$homepage)

Кроме того, вы можете использовать preg_split и группу символов \s, которая соответствует каждому символу пробела:

preg_split('/\s+/', $homepage);

Другим вариантом (возможно, более быстрым) может быть использование fgetcsv.

4 голосов
/ 02 мая 2011

Если вы хотите, чтобы содержимое файла представляло собой массив строк, уже есть встроенная функция

var_dump(file('http://www.example.com/data.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES));

См. Руководство: file ()

0 голосов
/ 02 мая 2011

Вы не взрываете строку, используя правильный символ. Вам нужно либо взорвать на новом разделителе строк (\n), либо использовать регулярное выражение (будет медленнее, но более надежным). В этом случае используйте preg_split

0 голосов
/ 02 мая 2011

Вы можете решить это, используя также регулярное выражение:

$homepage = file_get_contents("http://www.example.com/data.txt");
preg_match_all("/^[0-9]+$/", $homepage, $matches);

Это даст вам переменную $ match, которая содержит массив с числами.Это гарантирует, что он будет извлекать только те строки, в которых есть номера, если файл не отформатирован должным образом.

0 голосов
/ 02 мая 2011

Попробуйте взорвать на "\ n"

print_r (explode("\n",$homepage));

Также посмотрите на:

http://php.net/manual/de/function.file.php

...