Question

J'ai un dossier que nous appellerons info.txt sous format UNIX qui ne suit dans le:

#Dogs
#Cats
#Birds
#Rabbits

et je suis en cours d'exécution ce contre:

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

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

Maintenant, tout semble fonctionner très bien, sauf quand j'afficher le tableau que je reçois ce qui suit.

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

J'ai vérifié le fichier txt pour assurer qu'il n'y avait pas d'espace ou des caractères cachés devant la première # donc je suis à une perte de pourquoi cela se passe autre que je me sens comme si je manque quelque chose terriblement Facile. Toutes les idées?

Merci d'avance!

Était-ce utile?

La solution

explode() divise le delimiter. S'il n'y a rien avant le premier séparateur, puis c'est ce que le premier élément sera. Rien. Une chaîne vide.

Autres conseils

Je suppose que c'est parce que le premier caractère est un délimiteur, il est donc de mettre tout ce qui est à gauche de celui-ci dans le premier élément, même si elle est une chaîne vide. Donc, vous devez lancer le fichier avec « Chiens », pas « #maison »

Vous utilisez comme

  

# Chiens Chats # # # Oiseaux Lapins

PHP il se divise en coupant, donc où vous avez des chiens ce qu'il voit comme « espace vide » | Chiens.

Vous pouvez facilement remplir [0] en utilisant array_shift (entrée $ , 1);

Vous pouvez exploser par les nouvelles lignes et ne pas utiliser le # du tout bien que vous auriez alors un élément vide de fuite. Je suppose que vous avez encore à faire un peu de contrôle d'intégrité (supprimer le premier / dernier élément si elle est vide) après l'analyse syntaxique.

une autre façon

$f=file("file");
print_r( preg_replace("/^#/","",$f) ) ;
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top