Avatar billede bgjensen Nybegynder
05. juni 2005 - 23:14 Der er 4 kommentarer og
1 løsning

output fra array

jeg har følgende kode:

$start = strpos($cnt, 'Writing credits');
$len = strpos($cnt, '</table>',$start)-$start;
$site = substr($cnt,$start,$len);
if(!preg_match_all('![^<]*<a href="\/name\/nm([0-9]{7})\/">([^<]*)<\/a>!', $site, $x,PREG_SET_ORDER))
return(PML_FETCH_ERROR);

$ret = array();
foreach($x as $dir){
$ret[] = array('id'=>$dir[1],'name'=>$dir[2]);
}

mit spørgsmål er så hvordan får jeg resultatet ud på skærmen, helst også gerne i variabler så man kan bruge dem til andre formål.
Avatar billede coderdk Praktikant
06. juni 2005 - 02:07 #1
Jeg har lavet denne, måske kan du bruge den? Hvis du ikke kan, kan du bare afvise:

<?php

    function getMovie( $imdb_id )
    {
        $movie = array();
        $url = "http://imdb.com/title/$imdb_id/";
        $cnt = file_get_contents( $url );
        $interesting = "/(<h1><strong class=\"title\">.+?<td width=\"171\" align=\"right\">\s+<table)/s";
        if ( preg_match( $interesting, $cnt, $m ) )
        {
            $cnt = $m[1];
           
            $movie['cover'] = '';
            if ( preg_match( "/alt=\"cover\" src=\"(.+?)\"/", $cnt, $m ) )
            {
                $movie['cover'] = $m[1];
            }
           
            $movie['picture'] = '';
            if ( IMDB_USE_PICTURE_BLOB == 1 && $movie['cover'] != '' )
            {
                if ( !preg_match( "/npa\.gif$/", $movie['cover'] ) )
                {
                    $movie['picture'] = file_get_contents( $movie['cover'] );
                }
            }
           
            if ( preg_match( "/class=\"title\">(.+?)<small>\(<a href=\".+?\">(\d+)</", $cnt, $m ) )
            {
                $movie['title'] = trim( $m[1] );
                $movie['year'] = trim( $m[2] );
            }
            else
            {
                die( "<b>title/year failed.</b><br>" );
            }
           
            $movie['director'] = array();
            if ( preg_match( "/Directed by<\/b><br>\s+(.+?)<b class/s", $cnt, $m ) )
            {
                $m = $m[1];
                preg_match_all( "/<a href=\"\/name\/nm(\d+)\/\">(.+?)<\/a>/", $m, $dir );
                $n = count( $dir[1] );
                for ( $i = 0; $i < $n; $i++ )
                {
                    $movie['director'][] = array(
                            "name" => $dir[2][$i]
                            ,"id" => $dir[1][$i]
                        );
                }
            }
           
            $movie['writer'] = array();
            if ( preg_match( "/Writing credits<\/b>\s*(.*?)<\/td>/s", $cnt, $m ) )
            {
                $m = $m[1];
                preg_match_all( "/<a href=\"\/name\/nm(\d+)\/\">(.+?)<\/a>/", $m, $wri );
                $n = count( $wri[1] );
                for ( $i = 0; $i < $n; $i++ )
                {
                    $movie['writer'][] = array(
                            "name" => $wri[2][$i]
                            ,"id" => $wri[1][$i]
                        );
                }
            }
           
            $movie['genre'] = array();
            if ( preg_match( "/Genre:<\/b>(.*?)<br><br>/s", $cnt, $m ) )
            {
                $m = $m[1];
                preg_match_all( "/<a href=\"\/Sections\/Genres\/.*?\/\">(.+?)<\/a>/", $m, $gen );
                $n = count( $gen[1] );
                for ( $i = 0; $i < $n; $i++ )
                {
                    $movie['genre'][] = $gen[1][$i];
                }
            }

            $movie['tagline'] = '';
            if ( preg_match( '/<b class="ch">Tagline:<\/b> (.+?)</s', $cnt, $m ) )
            {
                $movie['tagline'] = trim( $m[1] );
            }
           
            $movie['plot'] = '';
            if ( preg_match( '/<b class="ch">Plot (Outline|Summary):<\/b> (.+?)</s', $cnt, $m ) )
            {
                $movie['plot'] = trim( $m[2] );
            }
           
            $movie['comment'] = '';
            if ( preg_match( '/<b class="ch">User Comments:<\/b>\s*(.*?)</s', $cnt, $m ) )
            {
                $movie['comment'] = trim( $m[1] );
            }
           
            $movie['rating'] = 0;
            $movie['ratedby'] = 0;
            if ( preg_match( '/<b>(.+?)\/10<\/b> \((.+?) votes\)/', $cnt, $m ) )
            {
                $movie['rating'] = $m[1];
                $movie['ratedby'] = str_replace( ",", "", $m[2] );
            }
           
            $movie['cast'] = array();
            if ( preg_match( '/<b class="blackcatheader">(Cast overview|Complete credited cast|Credited cast)(.*?)<\/table>/si', $cnt, $m ) )
            {
                $m = $m[2];
                preg_match_all( "/<a href=\"\/name\/nm(\d+)\/\">(.+?)<\/a>(.*?\.\.\. <\/td><td valign=\"top\">(.*?)<\/td>)?/", $m, $ca );
                $n = count( $ca[1] );
                for ( $i = 0; $i < $n; $i++ )
                {
                    $movie['cast'][] = array(
                            "name" => $ca[2][$i]
                            ,"id" => $ca[1][$i]
                            ,"role" => $ca[4][$i]
                        );
                }
            }
           
            $movie['aka'] = '';
            if ( preg_match( '/<b class="ch">Also Known As:<\/b><br>(.*?)[\(<]/s', $cnt, $m ) )
            {
                $movie['aka'] = trim( $m[1] );
            }
           
            $movie['runtime'] = 0;
            if ( preg_match( '/<b class="ch">Runtime:<\/b>.*?(\d+) min\s*<br>/s', $cnt, $m ) )
            {
                $movie['runtime'] = trim( $m[1] );
            }
           
            $movie['id'] = substr( $imdb_id, 2 );
            return $movie;
        }
        else
        {
            die( "<h3>Damn! Couldn't get the yummy part from IMDB...<br><a href='$url'>$url</a></h3>\n" );
        }
    }

?>
Avatar billede coderdk Praktikant
06. juni 2005 - 02:08 #2
Hov, IMDB_USE_PICTURE_BLOB er en define() som skal være 0 eller 1 - hvis den er 1 så gemmer den selve billedet i en variabel, ellers gemmer den bare URL'en.
Avatar billede bgjensen Nybegynder
06. juni 2005 - 07:43 #3
ja det kan bruges, det er sådan et script jeg er ved at lave så det kan godt bruges mange tak.
Avatar billede bgjensen Nybegynder
06. juni 2005 - 11:53 #4
kan du ikke give et eks. på hvordan man viser dataen på skærmen, altså de variabler som indeholder det den har fundet ( $movie[] ) osv.
Avatar billede coderdk Praktikant
22. juni 2005 - 20:09 #5
Du kan se strukturen ved at lave en:

$movie = getMovie( 'tt0104029' );
echo "<pre>"; var_dump( $movie ); echo "</pre>";

:)
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