Вопрос

У меня есть файл, который мы вызовем info.txt в формате UNIX, который содержит в себе только следующее:

#Dogs
#Cats
#Birds
#Rabbits

и я использую это против этого:

$filename = "info.txt";
$fd = fopen ($filename, "r");
$contents = fread ($fd,filesize ($filename));

fclose ($fd);
$delimiter = "#";
$insideContent = explode($delimiter, $contents);

Теперь, похоже, все работает нормально, за исключением того, что когда я отображаю массив, я получаю следующее.

[0] => 
[1] => Dogs
[2] => Cats
[3] => Birds
[4] => Rabbits

Я проверил файл .txt, чтобы убедиться, что перед первым # не было пробелов или скрытых символов, поэтому я в недоумении, почему это происходит, кроме того, что я чувствую, что упускаю что-то ужасно простое.Есть какие-нибудь идеи?

Заранее спасибо!

Это было полезно?

Решение

explode() разбивается по разделителю.Если перед первым разделителем ничего нет, то это будет первый элемент.Ничего.Пустая строка.

Другие советы

Я предполагаю, что это потому, что самый первый символ является разделителем, поэтому в первый элемент помещается все, что находится слева от него, даже если это пустая строка.Поэтому вам придется начинать файл с «Dogs», а не с «#Dogs».

Ты ведешь это так, как будто

#Собаки#Кошки#Птицы#Кролики

PHP разбивает его путем вырезания, таким образом, там, где у вас есть Dogs, он видит это как "Пустое пространство" | Dogs.

Вы можете легко заполнить [0], используя array_shift($input, 1);

Вы можете разбить строку на новую строку и вообще не использовать #, хотя тогда у вас будет пустой пустой элемент.Я думаю, вам все равно придется выполнить некоторую проверку целостности (удалить первый/последний элемент, если он пуст) после анализа.

другой путь

$f=file("file");
print_r( preg_replace("/^#/","",$f) ) ;
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top