[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Заменить все картинки с ответом 404
Страницы: 1, 2
Lightt
Добрый день.
Допустим у нас есть сотня картинок

<img id="d1" src="https://igcdn-photos-e-a.akamaihd.net/hphotos-ak-xaf1/t51.2885-19/11378871_358790890981124_2078371892_a.jpg">
<img
id="d2" src="https://igcdn-photos-a-a.akamaihd.net/hphotos-ak-xaf1/t51.2885-19/11379015_1456553887988128_1562130345_a.jpg">
<img
id="d3" src="https://igcdn-photos-a-a.akamaihd.net/hphotos-ak-xfa1/t51.2885-19/11372228_902744869768440_1769208499_a.jpg">


Первые 2 уже не существуют, и возвращают 404 ответ.
Можно ли как то найти все несуществующие картинки, и заменить на какую то одну?
Вот такой код работает на конкретную картинку, но перебрать все не очень хочется. Возможно поставить условие для всех картинок с кодом 404


<script>
$.ajax({
url:'https://igcdn-photos-e-a.akamaihd.net/hphotos-ak-xaf1/t51.2885-19/11378871_358790890981124_2078371892_a.jpg',
type:'HEAD',
error: function(){
$('#d1').attr('src','https://igcdn-photos-a-a.akamaihd.net/hphotos-ak-xfa1/t51.2885-19/11372228_902744869768440_1769208499_a.jpg')
},
success: function(){

}
}
);
</
script>
Lightt
Invis1ble
А можно пример? С таким кодом не получается:

<script>   
$(document).ajaxError(function() {
$(".classw").attr('src','https://igcdn-photos-a-a.akamaihd.net/hphotos-ak-xfa1/t51.2885-19/11372228_902744869768440_1769208499_a.jpg');
});
</
script>


<img class="classw" src="https://igcdn-photos-g-a.akamaihd.net/hphotos-ak-xaf1/t51.2885-19/11263264_148776266 1513894_549775106_a.jpg">
<img
class="classw" src="https://igcdn-photos-a-a.akamaihd.net/hphotos-ak-xaf1/t51.2885-19/11379015_1456553887988128_1562130345_a.jpg">
<img
class="classw" src="https://igcdn-photos-a-a.akamaihd.net/hphotos-ak-xaf1/t51.2885-19/11379015_1456553887988128_1562130345_a.jpg">
<img
class="classw" src="https://igcdn-photos-a-a.akamaihd.net/hphotos-ak-xaf1/t51.2885-19/11379015_1456553887988128_1562130345_a.jpg">
<img
class="classw" src="https://igcdn-photos-a-a.akamaihd.net/hphotos-ak-xfa1/t51.2885-19/11372228_902744869768440_1769208499_a.jpg">

user posted image
Invis1ble
для начала проверь, выполняется ли вообще колбэк

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

Michael
я б на стороне сервера...

_____________
There never was a struggle in the soul of a good man that was not hard
Lightt
Michael
Подскажи, пожалуйста как? Не очень понимаю, этот момент...
Michael
ну зависит от движка.
я делал себе подобное в своей новой CMF, там задача с миниатюрками.
Через mod rewrite - если картинка есть то она отдается, если нет то по пути hphotos-ak-xaf1/t51.2885-19/ можно контролер стартануть который вернет картинку по умолчанию.

_____________
There never was a struggle in the soul of a good man that was not hard
Lightt
Michael
Неужели нет какого то универсального способа?
Вот на конкретном примере:

<?
$arr = array ("11263264_1487762661513894_549775106_a.jpg","11379015_1456553887988128_1562130345_a.jpg","11379015_1456553887988128_1562130345_aewew.jpg","11372228_902744869768440_1769208499_a.jpg");
foreach ($arr as $ar){?>
<img class="classw" src="https://igcdn-photos-a-a.akamaihd.net/hphotos-ak-xfa1/t51.2885-19/<?=$ar;?>">
<?}?>


1 и 4 картинки существуют. 2-3 нету, и нужно просто условие, что бы их заменить.
Типа такого:

<? foreach ($arr as $ar){?>
<?
if ($ar==404){$ar = '11263264_1487762661513894_549775106_a.jpg';}?>
<img class="classw" src="https://igcdn-photos-a-a.akamaihd.net/hphotos-ak-xfa1/t51.2885-19/<?=$ar;?>">
<?}?>
Oyeme
Самое простое через curl

$ch = curl_init("http://www.example.com/favicon.ico");

curl_setopt($ch, CURLOPT_NOBODY, true);
curl_exec($ch);
$retcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
// $retcode >= 400 -> not found, $retcode = 200, found.
curl_close($ch);
twin
Цитата
Типа такого:


Ну file_exists() попробуй.

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

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
Lightt
Oyeme,
twin
Но ведь и в том и в том случае, придется делать запрос к каждой картинке в foreach?
<? foreach ($arr as $ar){?>
<?

$ch = curl_init($ar);

curl_setopt($ch, CURLOPT_NOBODY, true);
curl_exec($ch);
$retcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if($retcode==404) {
$ar = '11263264_1487762661513894_549775106_a.jpg';
}
?>
<img class="classw" src="https://igcdn-photos-a-a.akamaihd.net/hphotos-ak-xfa1/t51.2885-19/<?=$ar;?>">
<?}?>

Это работает очень, очень долго!
28 секунд против 2-х без этого кода.
Я по этому и хотел какое то универсальное условие для всех с 404 без проверок каждой картинке.
Возможно, я вообще делаю немного не правильно.
Читал, что обычно такие картинки заменяются подложкой. Но хром, выдает вот такой значок
user posted image он то меня и смущает. Может проще как то избавиться от него, чем пытаться отловить все картинки?
AllesKlar
Lightt
вот, наговнокодил на скорую руку, оптимизируй :)

клик
<html>
<head>
<script
src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script>
var
src = new Array();
var info = function(img) {
src.push(img.src);
}
$(window).load(function(){
$('.classw').each(function(idx, img){
var is_src = false;
$.each(src,function(i, el){
if(img.src == el)
{
is_src = true;
return false;
}
}
);
if( ! is_src)
{
img.src = 'http://phpforum.su/uploads/av-27208.jpg';
}
}
);
});

</script>
</head>
<body>
<img
class="classw" src="https://igcdn-photos-g-a.akamaihd.net/hphotos-ak-xaf1/t51.2885-19/11263264_148776266 1513894_549775106_a.jpg" onload="info(this)">

<img
class="classw" src="https://igcdn-photos-a-a.akamaihd.net/hphotos-ak-xaf1/t51.2885-19/11379015_1456553887988128_1562130345_a.jpg" onload="info(this)">
<img
class="classw" src="https://igcdn-photos-a-a.akamaihd.net/hphotos-ak-xaf1/t51.2885-19/11379015_1456553887988128_1562130345_a.jpg" onload="info(this)">
<img
class="classw" src="https://igcdn-photos-a-a.akamaihd.net/hphotos-ak-xaf1/t51.2885-19/11379015_1456553887988128_1562130345_a.jpg" onload="info(this)">
<img
class="classw" src="https://igcdn-photos-a-a.akamaihd.net/hphotos-ak-xfa1/t51.2885-19/11372228_902744869768440_1769208499_a.jpg" onload="info(this)">
</body>
</html>


Но, конечно же, лучше это делать на стороне сервера.
Если картинки на твоем хосте, то, как уже сказали file_exists()
Если картинки чужие, то
 var_dump(get_headers('https://igcdn-photos-g-a.akamaihd.net/hphotos-ak-xaf1/t51.2885-19/11263264_148776266 1513894_549775106_a.jpg'));


_____________
[продано копирайтерам]
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.