Html tag uit string halen en tonen
Ik heb een artikel en daarin staan plaatjes. Nou wil ik bij het pre-tonen van het artikel (klein stukje tekst met leesmeer erbij) een plaatje.
Nou moet ik een regex hebben om de eerste <img src="%"> eruit te halen.
Het moet ook werken als er <IMG SRC='%'> staat.
Ik heb het volgende stukje script al, maar het werkt niet perfect. Hoe kan ik ervoor zorgen dat het wel werkt?
$artikel = stripslashes($row['inhoud']);
$woordenartikelarray = explode(" ",$artikel);
$aantalwoorden = count($woordenartikelarray);
echo $aantalwoorden;
$vardone = '';
$counter2 = 1;
$img = '';
while($aantalwoorden > $counter2 AND $vardone != 'done')
{
if($woordenartikelarray[$counter2] == "<img" OR $woordenartikelarray[$counter2] == "<IMG")
{
$src = $counter2 + 1;
$src = $woordenartikelarray[$src];
$src = str_replace('(.*?)\>$','\1\>',$src);
$img = '<div style="overflow: hidden; float: right; width: 150px; height: 100px;"><img '.$src.'></div>';
$vardone = 'done';
}
$counter2 = $counter2 + 1;
}
Nou moet ik een regex hebben om de eerste <img src="%"> eruit te halen.
Het moet ook werken als er <IMG SRC='%'> staat.
Ik heb het volgende stukje script al, maar het werkt niet perfect. Hoe kan ik ervoor zorgen dat het wel werkt?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
$artikel = stripslashes($row['inhoud']);
$woordenartikelarray = explode(" ",$artikel);
$aantalwoorden = count($woordenartikelarray);
echo $aantalwoorden;
$vardone = '';
$counter2 = 1;
$img = '';
while($aantalwoorden > $counter2 AND $vardone != 'done')
{
if($woordenartikelarray[$counter2] == "<img" OR $woordenartikelarray[$counter2] == "<IMG")
{
$src = $counter2 + 1;
$src = $woordenartikelarray[$src];
$src = str_replace('(.*?)\>$','\1\>',$src);
$img = '<div style="overflow: hidden; float: right; width: 150px; height: 100px;"><img '.$src.'></div>';
$vardone = 'done';
}
$counter2 = $counter2 + 1;
}
Iets in de richting van:
(niet getest)
Code (php)
(niet getest)
ik denk dat je beter met preg_match_all kunt werken. Iets als dit, getest en werkend bevonden :P
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
$text = 'adfgadfgadff sajfhsadjfh sda
f adjfffh gasdjf asdjf ghdafjf s
daf hasdf hgasdjkf gsadf
sad f jka<IMG alt="test" src="kebab.jpg" />sdg fsdhf asd jg ads
agfdjhg adsjfk hsd
gjdfhg jadfgh adfsgjl hadfg
sdfgadskjgh adfg adfg
asdjkhadf <IMG src="kipsate.jpg"> asdgdafgdf
sdfg
sdfgsdfgsdf
gsdfgsdfgsdfgsdfghsdfhrtgdarg d eg rtfg adfg tsh g
dsfg sdfg serg sdrg srtgsdf sgfd
asldgjhdflg <img src="iksdee.jpg"> sdf af awef awef cdsafsdfgasd
asdgregaergadfvadg';
preg_match_all('/<img (.*)src="(.+)"(.*)>/i', $text, $imgs);
$first = $imgs[2]; // Nummer 2, want we willen de waarde van de tweede (.*) hebben
$first = $first[0]; // En daarvan dan weer de 0, want dat is de eerste match
echo '<img src="'.$first.'" />'; // $first zal de src van het eerste voorkomen van <img> bevatten
?>
$text = 'adfgadfgadff sajfhsadjfh sda
f adjfffh gasdjf asdjf ghdafjf s
daf hasdf hgasdjkf gsadf
sad f jka<IMG alt="test" src="kebab.jpg" />sdg fsdhf asd jg ads
agfdjhg adsjfk hsd
gjdfhg jadfgh adfsgjl hadfg
sdfgadskjgh adfg adfg
asdjkhadf <IMG src="kipsate.jpg"> asdgdafgdf
sdfg
sdfgsdfgsdf
gsdfgsdfgsdfgsdfghsdfhrtgdarg d eg rtfg adfg tsh g
dsfg sdfg serg sdrg srtgsdf sgfd
asldgjhdflg <img src="iksdee.jpg"> sdf af awef awef cdsafsdfgasd
asdgregaergadfvadg';
preg_match_all('/<img (.*)src="(.+)"(.*)>/i', $text, $imgs);
$first = $imgs[2]; // Nummer 2, want we willen de waarde van de tweede (.*) hebben
$first = $first[0]; // En daarvan dan weer de 0, want dat is de eerste match
echo '<img src="'.$first.'" />'; // $first zal de src van het eerste voorkomen van <img> bevatten
?>
Gewijzigd op 01/01/1970 01:00:00 door - -
Ja herjan, ik probeerde eerst jouw manier en het werkte niet, toen jonathans manier gebruikt en dat werkte na een klein foutje gefixed te hebben. In ieder geval bedankt beiden.
'Marthijn:
Ja herjan, ik probeerde eerst jouw manier en het werkte niet, toen jonathans manier gebruikt en dat werkte na een klein foutje gefixed te hebben. In ieder geval bedankt beiden.
Wat moest je nog aanpassen dan? Misschien zijn er meer die er wat aan kunnen hebben ;)
Je kunt de code toch weergeven op je scherm door de < en > en " te veranderen in htmlentities




