29. september 2006 - 23:08
Der er
27 kommentarer og 1 løsning
PHP oversættelse af mappeindhold til XML
Hej, Jeg er på udkig efter et PHP-script der kan kikke i en mappe på en server (relativt eller absolut) og returnere mappens indhold som XML. Eksempel: visMappeIndholdSomXml.php kikker på "mappe" (der f.eks. indeholder to filer) , og returnerer. <?xml version="1.0" ?> <filer> <sang="sang1" url="sang1.mp3" /> <sang="sang2" url="sang2.mp3" /> </filer>
Annonceindlæg fra Computerworld
29. september 2006 - 23:45
#1
Du kan hente filerne med: $handle = opendir("./mappe/"); while(false !== ($file = @readdir($handle))) { if(is_file("./mappe/".$file)) { //nu har du filens navn i $file } } ...så er resten jo bare et spørgsmål om udskrivning/formatering.
30. september 2006 - 00:10
#2
Jeg er desværre ikke stærk nok i PHP til "bare"-delen af det (og "sang"-delen af det skal være strengen "sang" + et tal der tæller opad...
30. september 2006 - 00:22
#3
Okey. Jeg ved så ikke skide meget om xml, men kan da forsøge: echo '<?xml version="1.0" ?>'; echo '<filer>'; $i = 1; $handle = opendir("./mappe/"); while(false !== ($file = @readdir($handle))) { if(is_file("./mappe/".$file)) { echo '<sang="sang'.$i.'" url="sang'.$i.'.mp3" />'; } } echo '</filer'>'; Som sagt utestet og uden garanti, men prøv det :)
30. september 2006 - 00:23
#4
Woops, her: echo '<?xml version="1.0" ?>'; echo '<filer>'; $i = 1; $handle = opendir("./mappe/"); while(false !== ($file = @readdir($handle))) { if(is_file("./mappe/".$file)) { echo '<sang="sang'.$i.'" url="sang'.$i.'.mp3" />'; $i++; } } echo '</filer'>';
30. september 2006 - 00:24
#5
Okey, nu er jeg vist et fjols. 3. gang er lykkens gang? echo '<?xml version="1.0" ?>'; echo '<filer>'; $i = 1; $handle = opendir("./mappe/"); while(false !== ($file = @readdir($handle))) { if(is_file("./mappe/".$file)) { echo '<sang="sang'.$i.'" url="'.$file.'" />'; $i++; } } echo '</filer'>'; Beklager !
30. september 2006 - 00:29
#6
Altså: Der er 'mappe'. Ved siden af den ligger visMappeIndholdSomXml.php, som er <?php echo '<?xml version="1.0" ?>'; echo '<filer>'; $i = 1; $handle = opendir("./mappe/"); while(false !== ($file = @readdir($handle))) { if(is_file("./mappe/".$file)) { echo '<sang="sang'.$i.'" url="'.$file.'" />'; $i++; } } echo '</filer'>'; ?>
30. september 2006 - 00:29
#7
For det returnerer ikke noget hos mig...
30. september 2006 - 00:31
#8
echo '</filer'>'; <- Du har et ' for meget her. (Eller jeg havde, i hvert fald skal det væk): echo '</filer>';
30. september 2006 - 00:39
#9
Ked af det, men det giver ikke noget. Ligenu ligger der en .txt-fil og en .jpg-fil i "mappe", til at teste på. <?php echo '<?xml version="1.0" ?>'; echo '<filer>'; $i = 1; $handle = opendir("./mappe/"); while(false !== ($file = @readdir($handle))) { if(is_file("./mappe/".$file)) { echo '<sang="sang'.$i.'" url="'.$file.'" />'; $i++; } } echo '</filer>'; ?>
30. september 2006 - 00:42
#10
Ja. Altså du har din php-fil liggende, og i en undermappe ligger de 2 filer? Hvad sker der ikke? Har du tjekket din browsers kilde-kode? XML er jo sådan set ikke noget der skal skrives ud af browseren...
30. september 2006 - 00:46
#11
30. september 2006 - 00:46
#12
30. september 2006 - 00:49
#13
Jo, jo, det bliver mit nu også. Har du et link til dér, hvor du har den liggende? Det undrer mig nemlig lidt, for her virker den fint...
30. september 2006 - 00:57
#15
<sang> bliver ikke lukket med </sang>, må det være.
30. september 2006 - 00:57
#16
Det virker fint - Dit script skal bare se sådan ud: <?php header('Content-Type: text/xml'); echo '<?xml version="1.0" ?>'; echo '<filer>'; $i = 1; $handle = opendir("./mappe/"); while(false !== ($file = @readdir($handle))) { if(is_file("./mappe/".$file)) { echo '<sang="sang'.$i.'" url="'.$file.'" />'; $i++; } } echo '</filer>'; ?>
30. september 2006 - 00:57
#17
(Altså content-type skal sættes, så fanger browseren det og viser XML)
30. september 2006 - 00:58
#18
Prøver med: <?php echo '<?xml version="1.0" ?>'; echo '<filer>'; $i = 1; $handle = opendir("./mappe/"); while(false !== ($file = @readdir($handle))) { if(is_file("./mappe/".$file)) { echo '<sang="sang'.$i.'" url="'.$file.'" />'; $i++; } } echo '</sang></filer>'; ?>
30. september 2006 - 00:58
#19
Det var jeg så ikke klar over...
30. september 2006 - 00:59
#20
Her er et utestet alternativ: <?php header('Content-Type: text/xml'); echo "<?xml version="1.0" ?>\n<filer>\n"; $i = 1; $files = glob( 'mappe/*' ); foreach ( $files as $file ) { echo '<sang="sang'.$i.'" url="'.$file.'" />'; $i++; } echo '</filer>'; ?>
30. september 2006 - 01:02
#21
Doh: echo "<?xml version="1.0" ?>\n<filer>\n"; skal naturligvis være: echo "<?xml version=\"1.0\" ?>\n<filer>\n"; :)
30. september 2006 - 01:04
#22
Normalt er jeg ikke tilhænger af at skrive tingene kort, men: <?php header('Content-Type: text/xml'); echo "<?xml version=\"1.0\" ?>\n<filer>\n"; $i = 1; foreach ( glob( 'mappe/*' ) as $file ) echo '<sang="sang'.$i++.'" url="'.$file.'" />'; echo '</filer>'; ?> :)
30. september 2006 - 01:08
#23
Super, og tak! Det er MEGET lang tid jeg har været herinde og er lidt i tvivl om hvem der skal have pts, det må vel være dig coderdk?
30. september 2006 - 01:22
#24
Du bestemmer jo hvem der skal have point, men nu tog du dem i hvert fald selv :)
30. september 2006 - 01:31
#25
Nej, jeg synes jaw skal have pointene, da hans svar var helt brugbart (manglede bare en header)! :) Men som jaw skrev, så napsede du dem lige selv ;)
30. september 2006 - 09:31
#26
Det var altså en fejl! Kan jeg gøre det om? Lave et nyt spørgsmål? Sorry! Det er halvandet år siden jeg sidst har været herinde tror jeg.
30. september 2006 - 11:17
#27
hmm, fik du ikke et brugbart svar af jaw?, så syntes jeg han skulle have de points, det er ikke mere end fair for ham...
30. september 2006 - 12:19
#28
Du kan ikke gøre det om, men du kan altid oprette et nyt spørgsmål, der hedder point til xxx med henvisning til det her :)
Vi tilbyder markedets bedste kurser inden for webudvikling