barentshavet Skrevet 10. mai 2012 Del Skrevet 10. mai 2012 (endret) Hei. For å sette dere inn i selve problemstillingen: Jeg lager en oversikt over nyeste innlegg brukere poster fra sin blogg. Problemet er at jeg ønsker at det velges ett tilfeldig bilde fra blogginnlegget som vises som forsidebilde på denne listen. Jeg har tenkt over noen løsninger, men kommet frem til at følgende ikke vil fungere: - når brukere laster opp bilder, kan man legge til bildene i databasen slik at jeg enkelt kan finne et bilde som forsidebilet. Problemet oppstår om brukeren velger å ikke bruke det spesifikke bildet man har lastet opp - da vil det vises uansett noe som er litt dumt hvis bildet for eksempel ikke har noe med selve blogginnlegget å gjøre. Så, har noen en idè til hvordan jeg kan finne alle bildene, eller ett tilfeldig bilde, gjennom et blogginnlegg med PHP og MySQL? Endret 10. mai 2012 av winter2012 Lenke til kommentar
molty Skrevet 10. mai 2012 Del Skrevet 10. mai 2012 Du kan jo hente ut blogginnlegget, og søke gjennom innlegget med php etter bildetagger og telle de, og så evt bruke rand() funksjonen til å velge en tilfeldig av de og så bruke det? Lenke til kommentar
barentshavet Skrevet 10. mai 2012 Forfatter Del Skrevet 10. mai 2012 Ja, det er det jeg også tenker. Har søkt litt på Google men ikke funnet noen treff som gir meg det jeg vil ha eller nærmere. Men det du skriver høres veldig smart ut og er nok den beste løsningen. Litt usikker på hvordan jeg skal filtrere ut img-taggene fra innlegget. Lenke til kommentar
molty Skrevet 11. mai 2012 Del Skrevet 11. mai 2012 Hvis du går ut i fra at et blogginnlegg inneholder dette: Heija bloggen, se her da <img src="bilde1" /> og her <img src="bilde2" /> så kan du bruke følgende kode <?php $entry = teksten-her-oppe ^ $imgs = explode("<img", $entry); $images = array(); foreach($imgs as $a){ $img = explode('src="', $a); $img = explode('"', $img[1]); // evt sjekke om det er et bilde her array_push($image, $img[0]); // Husker ikke helt rekkefølgen om det er string eller array først } $frontpic = $images[rand(0, (count($images)-1))]; Det er mitt forslag hvertfall Lenke til kommentar
Thomas. Skrevet 12. mai 2012 Del Skrevet 12. mai 2012 Ja, det er det jeg også tenker. Har søkt litt på Google men ikke funnet noen treff som gir meg det jeg vil ha eller nærmere. Men det du skriver høres veldig smart ut og er nok den beste løsningen. Litt usikker på hvordan jeg skal filtrere ut img-taggene fra innlegget. Du kan filtrere dem ut med for eksempel preg_match_all, noe slikt: <?php $string = 'Test hei <img src="bilde1"> string <img src="bilde2" /> Mere tekst her........ <img src="DSAAAAAAAAAAAAAAAAAAAA"> '; preg_match_all('/<img[^>]+>/i', $string, $var); echo 'Det finnes totalt <strong>' . count($var[0]) . '</strong> img-tager i stringen. Disse ble funnet:<br>'; foreach($var[0] as $id => $value) echo '#' . ($id+1) . ': ' . htmlspecialchars($value) . '<br>'; ?> Lenke til kommentar
barentshavet Skrevet 12. mai 2012 Forfatter Del Skrevet 12. mai 2012 (endret) Takk begge to for god respons:) Ja, det er det jeg også tenker. Har søkt litt på Google men ikke funnet noen treff som gir meg det jeg vil ha eller nærmere. Men det du skriver høres veldig smart ut og er nok den beste løsningen. Litt usikker på hvordan jeg skal filtrere ut img-taggene fra innlegget. Du kan filtrere dem ut med for eksempel preg_match_all, noe slikt: &--#60;?php $string = 'Test hei &--#60;img src="bilde1"&--#62; string &--#60;img src="bilde2" /&--#62; Mere tekst her........ &--#60;img src="DSAAAAAAAAAAAAAAAAAAAA"&--#62; '; preg_match_all('/&--#60;img[^&--#62;]+&--#62;/i', $string, $var); echo 'Det finnes totalt &--#60;strong&--#62;' . count($var[0]) . '&--#60;/strong&--#62; img-tager i stringen. Disse ble funnet:&--#60;br&--#62;'; foreach($var[0] as $id =&--#62; $value) echo '#' . ($id+1) . ': ' . htmlspecialchars($value) . '&--#60;br&--#62;'; ?&--#62; Denne fikk jeg til å fungere utmerket, virker som om dette var en god løsning. Prøvde ut litt hvordan jeg kan sette en limit og evt. sette et tilfeldig bilde som forsidebilde men fikk det ikke helt til, har du noen tips til hvordan jeg kan gjøre dette? Tusen takk for hjelpen, dette sparte meg for mye bry, Endret 12. mai 2012 av winter2012 Lenke til kommentar
Thomas. Skrevet 12. mai 2012 Del Skrevet 12. mai 2012 Takk begge to for god respons:) Ja, det er det jeg også tenker. Har søkt litt på Google men ikke funnet noen treff som gir meg det jeg vil ha eller nærmere. Men det du skriver høres veldig smart ut og er nok den beste løsningen. Litt usikker på hvordan jeg skal filtrere ut img-taggene fra innlegget. Du kan filtrere dem ut med for eksempel preg_match_all, noe slikt: &--#60;?php $string = 'Test hei &--#60;img src="bilde1"&--#62; string &--#60;img src="bilde2" /&--#62; Mere tekst her........ &--#60;img src="DSAAAAAAAAAAAAAAAAAAAA"&--#62; '; preg_match_all('/&--#60;img[^&--#62;]+&--#62;/i', $string, $var); echo 'Det finnes totalt &--#60;strong&--#62;' . count($var[0]) . '&--#60;/strong&--#62; img-tager i stringen. Disse ble funnet:&--#60;br&--#62;'; foreach($var[0] as $id =&--#62; $value) echo '#' . ($id+1) . ': ' . htmlspecialchars($value) . '&--#60;br&--#62;'; ?&--#62; Denne fikk jeg til å fungere utmerket, virker som om dette var en god løsning. Prøvde ut litt hvordan jeg kan sette en limit og evt. sette et tilfeldig bilde som forsidebilde men fikk det ikke helt til, har du noen tips til hvordan jeg kan gjøre dette? Tusen takk for hjelpen, dette sparte meg for mye bry, Sette limit? På hvilken måte? Her er en metode for å hente ut et tilfeldig bilde av bildene hvertfall: bruk array_rand for å få ut et tilfeldig bilde og DOMDocument for å extracte innholdet i src="" tagen på bildet. Eksempel: <?php $DOM = new DOMDocument(); $string = 'Test hei <img src="bild1e1"> string <img src="bilde2" /> Mere tekst her........ <img src="bilde3" /> <img src="bilde4" /> fffffff '; preg_match_all('/<img[^>]+>/i', $string, $var); echo 'Det finnes totalt <strong>' . count($var[0]) . '</strong> img-tager i stringen. Disse ble funnet:<br>'; foreach($var[0] as $id => $value) echo '#' . ($id+1) . ': ' . htmlspecialchars($value) . '<br>'; echo '<br><br>'; $randomPic = array_rand($var[0], 1); $DOM->loadHTML($var[0][$randomPic]); $tag = $DOM->getElementsByTagName('img'); foreach ($tag as $i) echo '<strong>Random bilde-URL:</strong> ' . $i->getAttribute('src'); ?> 1 Lenke til kommentar
barentshavet Skrevet 12. mai 2012 Forfatter Del Skrevet 12. mai 2012 Takk begge to for god respons:) Ja, det er det jeg også tenker. Har søkt litt på Google men ikke funnet noen treff som gir meg det jeg vil ha eller nærmere. Men det du skriver høres veldig smart ut og er nok den beste løsningen. Litt usikker på hvordan jeg skal filtrere ut img-taggene fra innlegget. Du kan filtrere dem ut med for eksempel preg_match_all, noe slikt: &--#60;?php $string = 'Test hei &--#60;img src="bilde1"&--#62; string &--#60;img src="bilde2" /&--#62; Mere tekst her........ &--#60;img src="DSAAAAAAAAAAAAAAAAAAAA"&--#62; '; preg_match_all('/&--#60;img[^&--#62;]+&--#62;/i', $string, $var); echo 'Det finnes totalt &--#60;strong&--#62;' . count($var[0]) . '&--#60;/strong&--#62; img-tager i stringen. Disse ble funnet:&--#60;br&--#62;'; foreach($var[0] as $id =&--#62; $value) echo '#' . ($id+1) . ': ' . htmlspecialchars($value) . '&--#60;br&--#62;'; ?&--#62; Denne fikk jeg til å fungere utmerket, virker som om dette var en god løsning. Prøvde ut litt hvordan jeg kan sette en limit og evt. sette et tilfeldig bilde som forsidebilde men fikk det ikke helt til, har du noen tips til hvordan jeg kan gjøre dette? Tusen takk for hjelpen, dette sparte meg for mye bry, Sette limit? På hvilken måte? Her er en metode for å hente ut et tilfeldig bilde av bildene hvertfall: bruk array_rand for å få ut et tilfeldig bilde og DOMDocument for å extracte innholdet i src="" tagen på bildet. Eksempel: <?php $DOM = new DOMDocument(); $string = 'Test hei <img src="bild1e1"> string <img src="bilde2" /> Mere tekst her........ <img src="bilde3" /> <img src="bilde4" /> fffffff '; preg_match_all('/<img[^>]+>/i', $string, $var); echo 'Det finnes totalt <strong>' . count($var[0]) . '</strong> img-tager i stringen. Disse ble funnet:<br>'; foreach($var[0] as $id => $value) echo '#' . ($id+1) . ': ' . htmlspecialchars($value) . '<br>'; echo '<br><br>'; $randomPic = array_rand($var[0], 1); $DOM->loadHTML($var[0][$randomPic]); $tag = $DOM->getElementsByTagName('img'); foreach ($tag as $i) echo '<strong>Random bilde-URL:</strong> ' . $i->getAttribute('src'); ?> Dette var akkurat det jeg trengte, takk igjen for hurtig respons. Lenke til kommentar
molty Skrevet 12. mai 2012 Del Skrevet 12. mai 2012 (endret) &--#60;?php $DOM = new DOMDocument(); $string = 'Test hei &--#60;img src="bild1e1"&--#62; string &--#60;img src="bilde2" /&--#62; Mere tekst her........ &--#60;img src="bilde3" /&--#62; &--#60;img src="bilde4" /&--#62; fffffff '; preg_match_all('/&--#60;img[^&--#62;]+&--#62;/i', $string, $var); echo 'Det finnes totalt &--#60;strong&--#62;' . count($var[0]) . '&--#60;/strong&--#62; img-tager i stringen. Disse ble funnet:&--#60;br&--#62;'; foreach($var[0] as $id =&--#62; $value) echo '#' . ($id+1) . ': ' . htmlspecialchars($value) . '&--#60;br&--#62;'; echo '&--#60;br&--#62;&--#60;br&--#62;'; $randomPic = array_rand($var[0], 1); $DOM-&--#62;loadHTML($var[0][$randomPic]); $tag = $DOM-&--#62;getElementsByTagName('img'); foreach ($tag as $i) echo '&--#60;strong&--#62;Random bilde-URL:&--#60;/strong&--#62; ' . $i-&--#62;getAttribute('src'); ?&--#62; Kan komme til nytte i framtiden, så stjeler den jeg også ^^ Endret 12. mai 2012 av molty Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå