PHP взрывается, не заполняя массив spot 0
Вопрос
У меня есть файл, который мы вызовем 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) ) ;