2014-09-27 2 views
0

Я использую DOMDocument для замены img src/height/width для динамического форматирования в зависимости от размера div. Он отлично работает, если только он пытается проанализировать изображение, которое было удалено с сервера, чего обычно не будет, но это невозможно, поэтому нам нужно обработать его, если это так.DOMDocument висит на недостающем изображении

Любые идеи, как я буду это делать?

Спасибо!

$dom=new DOMDocument(); 
    $dom->loadHTML($footer, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD); 
    $imgs = $dom->getElementsByTagName("img"); 
    foreach($imgs as $img) {    

     // Resize 
     $src = $img->getAttribute('src'); 
     $params = array('width' => $width); 
     $new_src = bfi_thumb($src, $params); 
     $img->setAttribute('src' , $new_src); 

     // Set new dimensions 
     $size = getimagesize($new_src); 
     $img->removeAttribute('height'); 
     $img->removeAttribute('width'); 
     $img->setAttribute('height', $size[1]); 
     $img->setAttribute('width', $size[0]); 
    } 
    $footer = $dom->saveHTML(); 

ответ

0

Просто проверьте, если изображение существует перед выполнением каких-либо действий:

$src = $img->getAttribute('src'); 
$exists = file_get_contents($src, NULL, NULL, NULL, 1); 
if($exists) { 
    $params = array('width' => $width); 
    $new_src = bfi_thumb($src, $params); 
    $img->setAttribute('src' , $new_src); 

    // Set new dimensions 
    $size = getimagesize($new_src); 
    $img->removeAttribute('height'); 
    $img->removeAttribute('width'); 
    $img->setAttribute('height', $size[1]); 
    $img->setAttribute('width', $size[0]); 
} 

Если необходимо использовать часто, это может быть лучше в качестве функции.

function srcExists($src) { 
    $exists = file_get_contents($src, NULL, NULL, NULL, 1); 
    return ($exists) ? true : false; 
} 
+0

Но разве 'src' не содержит URL-адрес, а не путь к файлу? Это будет работать, только если 'src' просто что-то вроде« image.png », и это было в текущем рабочем каталоге. – wavemode

+0

URL-адрес - путь к файлу. –

+0

Я добавил к скрипту, если у него возникли проблемы с доступом к нему через URL-адрес, вместо этого вы можете использовать file_get_contents(). –

Смежные вопросы