Avatar billede webmercial Nybegynder
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>
Avatar billede jaw Nybegynder
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.
Avatar billede webmercial Nybegynder
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...
Avatar billede jaw Nybegynder
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 :)
Avatar billede jaw Nybegynder
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'>';
Avatar billede jaw Nybegynder
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 !
Avatar billede webmercial Nybegynder
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'>';
?>
Avatar billede webmercial Nybegynder
30. september 2006 - 00:29 #7
For det returnerer ikke noget hos mig...
Avatar billede jaw Nybegynder
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>';
Avatar billede webmercial Nybegynder
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>';
?>
Avatar billede jaw Nybegynder
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...
Avatar billede webmercial Nybegynder
30. september 2006 - 00:46 #11
Ingenting i kildekoden - og det skal da skrives ud! Præcis ligesom
http://journster.com/view/http://www.eksperten.dk/feed/Programmering_Script_PHP.rss
Avatar billede webmercial Nybegynder
30. september 2006 - 00:46 #12
Avatar billede jaw Nybegynder
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...
Avatar billede webmercial Nybegynder
30. september 2006 - 00:54 #14
ok, det er fordi jeg har testet i Firefox, og fordi der er en syntaksting i XML-en. Explorer viser noget, men giver fejl. Det burde jeg kunne rette selv.
http://www.customplayer.dk/udvikling/visMappeIndholdSomXml.php
Avatar billede webmercial Nybegynder
30. september 2006 - 00:57 #15
<sang> bliver ikke lukket med </sang>, må det være.
Avatar billede coderdk Praktikant
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>';
?>
Avatar billede coderdk Praktikant
30. september 2006 - 00:57 #17
(Altså content-type skal sættes, så fanger browseren det og viser XML)
Avatar billede webmercial Nybegynder
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>';
?>
Avatar billede jaw Nybegynder
30. september 2006 - 00:58 #19
Det var jeg så ikke klar over...
Avatar billede coderdk Praktikant
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>';
?>
Avatar billede coderdk Praktikant
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";

:)
Avatar billede coderdk Praktikant
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>';
?>

:)
Avatar billede webmercial Nybegynder
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?
Avatar billede jaw Nybegynder
30. september 2006 - 01:22 #24
Du bestemmer jo hvem der skal have point, men nu tog du dem i hvert fald selv :)
Avatar billede coderdk Praktikant
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 ;)
Avatar billede webmercial Nybegynder
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.
Avatar billede zynzz Praktikant
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...
Avatar billede jaw Nybegynder
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 :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester



Seneste spørgsmål Seneste aktivitet
I går 23:37 Poe strøm Af lurup i LAN/WAN
I går 14:46 GIF-EDITOR Af snestrup2000 i Billedbehandling
I går 14:03 Logge ind Af Bob i PC
I går 12:12 2 skærme - 1 virker - den anden siger No signal Af eksmojo i Skærme
I går 10:33 openvpn projekt Af dcedata1977 i Windows