PHP dizi noktada 0 doldurarak değil patlayabilir

5 Cevap php

Sanırım info.txt, sadece içinde şu vardır UNIX format altında arayacak bir dosya var:

#Dogs
#Cats
#Birds
#Rabbits

ve buna karşı bu çalıştırıyorum:

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

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

Şimdi her şey ben aşağıdaki almak dizisi görüntülemek zamanlar dışında iyi çalışıyor görünüyor.

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

Ben bu ben korkunç basit bir şey eksik gibi hissediyorum başka oluyor neden bir kayıp değilim emin ilk # önünde herhangi bir boşluk ya da gizli karakterler yoktu yapmak için. Txt dosyası kontrol etti. Herhangi bir fikir?

Teşekkürler gelişmiş!

5 Cevap

explode() sınırlayıcıya böler. Hiçbir şey ilk sınırlayıcı önce varsa, o ilk unsur olacaktır budur. Hiçbir şey. Boş bir dize.

Boş bir dize olsa bile, ben ilk karakter bir ayırıcı çünkü öyle olduğunu tahmin ediyorum, bu yüzden ilk öğe onun solunda ne varsa koyuyor. Yani değil "# Dogs", "Köpekler" ile dosyayı başlamak zorunda kalacak

Sen gibi koşuyoruz

# # Dogs Cats # Birds # Tavşanlar

Köpekler | PHP Köpekler nerede 'Blank Space' gibi görüyor, böylece keserek onu böler.

Kolayca kullanarak [0] doldurabilirsiniz array_shift($input, 1);

Sen yenisatırlar tarafından patlayabilir ve sonra bir sondaki boş bir öğe olurdu rağmen tüm # kullanamadı. Ben hala ayrıştırma sonra bazı bütünlük kontrolü (boş ise ilk / son öğeyi kaldırmak) yapmak zorunda sanırım.

Başka bir şekilde

$f=file("file");
print_r( preg_replace("/^#/","",$f) ) ;