Avatar billede jespernerd Nybegynder
10. februar 2009 - 13:22 Der er 12 kommentarer og
1 løsning

Hente det mellem <url>...</url>

Hej,
Jeg har en XML fil fra filmtrailer, hvor jeg ønsker at hente det mellem <url> og </url>.

<file format="flv" size="xlarge" status_id="2">
  <url>http://dk.clip-1.filmtrailer.com/819_886_1_4.flv?log_var=19|100001|-</url>
  <width>400px</width>
  <transfert>1024kbps</transfert>
  <md5>935ae4ef64123bdc073d18a97cbea7d3</md5>
  <size>0</size>
  <duration>00:00:00</duration>
  <pub_date unix_stamp="1225234800">2008-10-29</pub_date>
  </file>

Den SKAL vide, at det er mellem <file ......></file> også, fordi der findes andre <url> i xml-dokumentet, som ses her:

http://dk.feed.playnw.com/v2.0/?ListType=Latest30InCinema&channel_user_id=100001

Håber nogle kan hjælpe
Avatar billede jespernerd Nybegynder
10. februar 2009 - 13:23 #1
Har selv forsøgt uden held, se hvad jeg prøvede..

preg_match_all("/<url>http:\/\/dk.clip-1.filmtrailer.com\/(.*?)_1_4.flv(.*?)<\/url>/", $k, $Trailer);

$k er indeholdet fra XMLfilen
Avatar billede tjp Mester
10. februar 2009 - 13:45 #2
Ikke testet:

preg_match_all("<file.*?<url>(.*?)<\/url><\/file>"", $k, $Trailer);
Avatar billede jespernerd Nybegynder
10. februar 2009 - 14:08 #3
Funger ikke.. Der skal vel også / i start og / i slut ved enhver regexp string?
Avatar billede tjp Mester
10. februar 2009 - 14:49 #4
Som sagt u-testet... ;-)

Prøvede du så med:

preg_match_all("|<file.*?<url>(.*?)<\/url><\/file>|", $k, $Trailer);
Avatar billede tjp Mester
10. februar 2009 - 14:55 #5
Det ønskede skulle gerne ligge i $k[1][0], $k[1][1] ... $k[1][n] alt efter hvor mange 'hits' undermønstret (.*?) får.
Avatar billede jespernerd Nybegynder
10. februar 2009 - 15:07 #6
print_r($Trailer) returnere:

Array
(
    [0] => Array
        (
        )

    [1] => Array
        (
        )

)
Avatar billede jespernerd Nybegynder
10. februar 2009 - 15:16 #7
Fandt frem til dette..

<?php
$XMLString = '<file format="flv" size="xlarge" status_id="2">
  <url>http://dk.clip-1.filmtrailer.com/819_886_1_4.flv?log_var=19|100001|-</url>
  <width>400px</width>
  <transfert>1024kbps</transfert>
  <md5>935ae4ef64123bdc073d18a97cbea7d3</md5>
  <size>0</size>
  <duration>00:00:00</duration>
  <pub_date unix_stamp="1225234800">2008-10-29</pub_date>
  </file>
- <file format="mov" size="large" status_id="2">
  <url>http://dk.clip-1.filmtrailer.com/819_886_2_3.mov?log_var=19|100001|-</url>
  <width>320px</width>
  <transfert>512kbps</transfert>
  <md5>a635f7efc87f5a413e68c2a6b63b6a42</md5>
  <size>0</size>
  <duration>00:00:00</duration>
  <pub_date unix_stamp="1225234800">2008-10-29</pub_date>
  </file>
- <file format="mov" size="xlarge" status_id="2">
  <url>http://dk.clip-1.filmtrailer.com/819_886_2_4.mov?log_var=19|100001|-</url>
  <width>400px</width>
  <transfert>1024kbps</transfert>
  <md5>6cb150633779e73f576df9d9335b3c72</md5>
  <size>0</size>
  <duration>00:00:00</duration>
  <pub_date unix_stamp="1225234800">2008-10-29</pub_date>
  </file>';

$Explode = explode('<file format="flv" size="xlarge" status_id="2">', $XMLString);
$ExplodeIgen = explode('</file>', $Explode[1]);

preg_match_all("/<url>(.*?)<\/url>/", $ExplodeIgen[0], $k);

echo $k[0][0];

?>
Avatar billede jespernerd Nybegynder
10. februar 2009 - 15:21 #8
Det er en meget dårlig løsning.... kan nogle hjælpe??
Avatar billede tjp Mester
10. februar 2009 - 15:29 #9
Ups det var Trailer i stedet for k:
$Trailer[1][0], $Trailer[1][1] ... $Trailer[1][n]

Hvad gir :

preg_match_all("|<file.*?<url>(.*?)<\/url><\/file>|", $k, $Trailer);

echo $Trailer[1][0]
Avatar billede jespernerd Nybegynder
10. februar 2009 - 15:50 #10
Returnere præcist det samme..... kan du ikke teste det før du skriver det..?
Avatar billede jespernerd Nybegynder
10. februar 2009 - 16:13 #11
Du skal jo regne med der er mange forskellige af dem.. Se her:

<?php
/**
  COPYRIGHT JESPER
**/

class Filmtrailer
{
    public function BeginCathing($URL, $D)
    {
        $k = file_get_contents($URL);
         
        preg_match_all("/<original_title>(.*?)<\/original_title>/", $k, $Title);
        preg_match_all("/<movie_duration>(.*?)<\/movie_duration>/", $k, $Duration);
        preg_match_all("/<production_year>(.*?)<\/production_year>/", $k, $Year);
        preg_match_all("/<actors>(.*?)<\/actors>/", $k, $Actors);
        preg_match_all("/<directors>(.*?)<\/directors>/", $k, $Directors);
        preg_match_all("/<categories>(.*?)<\/categories>/", $k, $Categories);
        preg_match_all("/<distributors>(.*?)<\/distributors>/", $k, $Distributor);
        preg_match_all("/<description>(.*?)<\/description>/", $k, $Description);
        preg_match_all("/<pub_date unix_stamp=\"(.*?)\">(.*?)<\/pub_date>/", $k, $UnixTime);
        preg_match_all("|<file.*?<url>(.*?)<\/url><\/file>|", $k, $Trailer);

print_r($Trailer);

        echo "<h1>" . $D . "</h1>";
        for ( $i=0;$i<count($Title[1]);$i++)
        {
            /** @Split ACTORS **/

            $Ac = split("<actors>", $Actors[0][$i]);
            $ActorsNew = str_replace("</actor>", ",", $Ac);

            $RealActors = strip_tags($ActorsNew[1]);

            /** @Split DIRECTORS **/

            $Ds = split("<directors>", $Directors[0][$i]);
            $DirectorsNew = str_replace("</director>", ",", $Ds);

            $RealDirectors = strip_tags($DirectorsNew[1]);


            /** @Split CATEGORIES **/

            $Cs = split("<categories>", $Categories[0][$i]);
            $CategorieNew = str_replace("</categorie>", ",", $Cs);

            $RealCategories = strip_tags($CategorieNew[1]);


            /** @Split DISTRIBUTORS **/

            $DSS = split("<distributors>", $Distributor[0][$i]);
            $DistributorNew = str_replace("</distributor>", ",", $DSS);

            $RealDistributors = strip_tags($DistributorNew[1]);







            echo "Orginal Title: " . $Title[0][$i] . "<br />";
            echo "Filmvarighed: " . $Duration[0][$i] . " min.<br />";
            echo "Produktions år: " . $Year[0][$i] . "<br />";
            echo "Instruktør: " .  $RealDirectors . "<br />";
            echo "Distriutør: " .  $RealDistributors . "<br />";
            echo "Trailer: " .  $Trailer[0][$i] . "<br />";
            echo "Genrer: " .  $RealCategories . "<br />";
            echo "Skuespiller: " . $RealActors . "<hr />" . $Description[0][$i] . "<hr />";
        }
       
    }
}

$n = new Filmtrailer;
echo "<pre>";

// Now in cinemas
$n->BeginCathing('http://dk.feed.playnw.com/v2.0/?ListType=Latest30InCinema&channel_user_id=100001','Now in Cinemas');


// Coming Soon on DVD
$n->BeginCathing('http://dk.feed.playnw.com/?ListType=Next30OnDVD&channel_user_id=100001','Coming Soon on DVD');

?>
Avatar billede jespernerd Nybegynder
10. februar 2009 - 17:00 #12
hmm nå
Avatar billede jespernerd Nybegynder
19. marts 2009 - 13:28 #13
Jeg fandt en løsning med SimpelXML.
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
Kurser inden for grundlæggende programmering

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