Ik ben bezig om bepaalde soorten tags om te zetten.
Tot nu toe heb ik de volgende code:
$html = 'blabla <video controls="controls" width="300" height="150">
<source src="media/07092012_psvbabys.mp4" type="video/mp4" /></video><p><b>stuff</b></p><span>more <span class="foo">and <b>even bold mag</b>< more</span> stuff here</span><img src=\"smilies/smilyOne.png\">';
// prima
$html = strip_tags($html, "<img><b>");
$dom = new DOMDocument;
$dom->loadHTML($html);
// prima
// iterate through all the img elements in $html
foreach ($dom->getElementsByTagName('img') as $img) {
if($img->hasAttribute('src'))
{
$dom = str_replace($img, $img->getAttribute('src'));
}
}
print_r($html);
Ik wil ipv de afbeelding alleen de link naar de bron (src) zien. Maar op een of andere manier krijg ik toch een afbeelding te zien op het scherm.
Wat doe ik verkeerd?
Het gebruik van de DOM class van PHP is misschien wat complex. Mocht je toch de DOM willen gebruiken, dan dien je de DOM wel te saven.
De code die je nu hanteert is mij niet helemaal duidelijk, dus inhoudelijk exact aangeven wat er fout gaat is moeilijk.
Hi Max, thanks!
Dat is wat moet gebeuren... alleen de rest moet ook nog worden weergegeven.
Dus wat ik wil van de $html:
alle codes omzetten in platte tekst, behalve <B> en <IMG>. Als er een <IMG> gevonden wordt, moet daarvan alleen de link worden weergegeven.
Moeten de tags worden omgezet naar platte tekst? (as in htmlentities())? Of bedoel je dat de tags eruit gefilterd moeten worden en je alleen de tekst overhoudt + de link van de afbeelding?
Ik ben een beginner met php dus wat ik zeg zal wel niet kloppen maar wil het toch melden. Ik zie niet iets aan de uiteindelijke $html dat een link zou moeten zijn. Misschien $html in een a href stoppen (het gedeelte van de link dus, niet de tekst zelf)? $html extra opsplitsen?
Hier doe ik het dus eigenlijk omgekeerd van wat jij doet (eerst replacen en dan pas tags strippen). Dan weet je zeker dat ze er daarna altijd uit zijn, ook als iets fout gaat.