#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));
Также взгляните на:
Ответ №4:
Вы могли бы решить эту проблему, также используя регулярное выражение:
$homepage = file_get_contents("http://www.example.com/data.txt");
preg_match_all("/^[0-9] $/", $homepage, $matches);
Это даст вам переменную $matches, которая содержит массив с числами. Это гарантирует, что она будет извлекать только строки, в которых есть номера, в случае, если файл неправильно отформатирован.
Ответ №5:
Вы не разнесли строку, используя правильный символ. Вам либо нужно разнести разделитель новой строки ( n
), либо использовать регулярное выражение (будет медленнее, но надежнее). В таком случае используйте preg_split