Функция разнесения PHP с file_get_contents?

#php #explode

#php #разнесите

Вопрос:

    <?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));
    ?>
  

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

В конечном итоге я хочу прочитать числа из текстового файла и распечатать их частоту. The data.txt содержит 100 000 чисел. По одному числу в строке.

Комментарии:

1. Вы получили какой-либо результат? Вы уверены, что числа не разделены другим пробелом, например табуляцией?

2. Когда я использовал » n», я получил результат.

Ответ №1:

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

 explode("n",$homepage)
  

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

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

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

Ответ №2:

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

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

Смотрите Руководство: file()

Ответ №3:

Попробуйте разнесение в » n»

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

Также взгляните на:

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

Ответ №4:

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

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

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

Ответ №5:

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