- Home
- Przykłady i porady PHP79
- Inne pomoce, software6
- Banery
- Hyde Park Private Zone6
- Polityka cookies
- Udostępnianie tekstów
© 2001 - 2024 PhpCodex
Sprawdzamy czy obrazek istnieje przy pomocy DOM
Dom replace image if not exists
Przykład PHP2014-03-07 stopień trudności: łatwyOstatnio wynikł mi banalny problem gdy użytkownik usunął pliki zdjęć, przez co CMS w wielu wpisach wyświetlał znaczki erroru. Najprostszym sposobem jest oczywiście stosowanie w img parametru onerror, ale mało kto to robi.
Innym sposobem jest wykorzystanie obiektowego modelu dokumentu (Document Object Model, DOM), który pozwala nam łatwo wejść w strukturę wpisu html.
Dzięki niemu podmienimy niestniejące obrazki na zastępcze:
<?php
//przykładowy tekst
$html = 'Lorem ipsum dolor sit amet, <img src="star/star_full.png" alt="star.png" /> consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse <img alt="mrgreen.png" src="cms_demo/star/mrgreen.png" /> cillum dolore eu fugiat nulla pariatur. <img alt="mrgreen.png" src="cms_demo/star/mrgreen.png" /> Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum';
$doc = new DOMDocument();
$doc->loadHTML($html);
$tags = $doc->getElementsByTagName('img');
foreach ($tags as $tag) {
//pobieramy atrybut src
$src = $tag->getAttribute('src');
//i sprawdzamy czy fotka istnieje w naszych zbiorach
if(file_exists($src)){
echo"plik $src istnieje<br/>";
}
else {
echo"plik $src nie istnieje<br/>";
//tu możemy użyć dowolnego obrazka np. "zdjęcie usunięte" etc... ja użyłem tego który akurat istnieje
$html = str_replace($src, 'star/star_full.png', $html);
}
}
echo "<br/>".$html ;
?>