Afbeeldingen vervangen
Ik zit met een probleem: ik wil van elke afbeelding in een code alleen de bron 'src' weergeven.
Hoe krijg ik dat voor elkaar?
Ik heb tot nu toe het volgende:
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
$html = '<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">';
$dom = new DOMDocument;
$dom->loadHTML($html); // your text to be filtered is in $html
// iterate through all the img elements in $html
foreach ($dom->getElementsByTagName('img') as $img) {
# eliminate images with no "src" attribute
if (! $img->hasAttribute('src')) {
$img->parentNode->removeChild($img);
}
// anders de bron/src weergeven van die afbeelding...
}
$output = $dom->saveHTML();
# now strip out anything that isn't an <img> tag
$html = strip_tags($output, "<img>");
echo "html now: $html\n\n";
<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">';
$dom = new DOMDocument;
$dom->loadHTML($html); // your text to be filtered is in $html
// iterate through all the img elements in $html
foreach ($dom->getElementsByTagName('img') as $img) {
# eliminate images with no "src" attribute
if (! $img->hasAttribute('src')) {
$img->parentNode->removeChild($img);
}
// anders de bron/src weergeven van die afbeelding...
}
$output = $dom->saveHTML();
# now strip out anything that isn't an <img> tag
$html = strip_tags($output, "<img>");
echo "html now: $html\n\n";
Gewijzigd op 05/12/2015 13:48:50 door Daan Vee
Lees de commentaren:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
// lekker statisch... geldt als voorbeeld zeker?
$html = '<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
$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'))
{
echo 'SRC = ' . $img->getAttribute('src'). PHP_EOL;
}
}
?>
// lekker statisch... geldt als voorbeeld zeker?
$html = '<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
$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'))
{
echo 'SRC = ' . $img->getAttribute('src'). PHP_EOL;
}
}
?>
Gewijzigd op 05/12/2015 14:28:58 door Eddy E
Eigenlijk moet de hele tekst in $html platte tekst worden zonder html-codes erin.
Alleen als 'ie een afbeelding ontdekt moet daarvan ipv de afbeelding de src van de afbeelding worden weergegeven.
Ik krijg nu als resultaat: SRC = 1 op het scherm....
Snap je wat ik bedoel?
Quote:
ik wil van elke afbeelding in een code alleen de bron 'src' weergeven.
Hoe krijg ik dat voor elkaar?
Hoe krijg ik dat voor elkaar?
Quote:
Eigenlijk moet de hele tekst in $html platte tekst worden zonder html-codes erin.
Alleen als 'ie een afbeelding ontdekt moet daarvan ipv de afbeelding de src van de afbeelding worden weergegeven.
Alleen als 'ie een afbeelding ontdekt moet daarvan ipv de afbeelding de src van de afbeelding worden weergegeven.
Een heel verschil.
Jij wil dus iets als strip_tags("<img>").
En daarna de <img>-sources eruit halen, die erin zetten en dan de <img>-tag verwijderen?
Ps ik heb bovenstaande code gewijzigd: doet het nu wat je wilt?
Verschil: hasAttribute en getAttribute.
Toevoeging op 05/12/2015 14:46:44:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
// lekker statisch... geldt als voorbeeld zeker?
$html = '<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>");
$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'))
{
$html = str_replace($img, $img->getAttribute('src'));
}
}
?>
// lekker statisch... geldt als voorbeeld zeker?
$html = '<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>");
$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'))
{
$html = str_replace($img, $img->getAttribute('src'));
}
}
?>
Gewijzigd op 05/12/2015 14:47:55 door Eddy E
Want als ik $html laat zien komt er een tekst met afbeelding te staan en als ik $dom gebruik helemaal niets....
Hoe kan ik dan <b> vervangen door <font color="red">Hier de tekst die eerst bold was</font>?
Waarom de stokoude font-tag?
Anders mag ook, maar die tag moet dus vervangen worden door een andere....