У меня есть небольшой скрипт, который извлекает данные из IMDB с помощью omdbapi.
Мне удалось получить данные с сайта, но когда я пытаюсь проверить правильность постера фильма, он всегда возвращает false.
if(!$info['Poster'] == "N/A") {
$url = $info['Poster'];
$img = 'images/'.$info["imdbID"].'.jpg';
file_put_contents($img, file_get_contents($url));
echo 'Downloaded';
} else {
echo '!Downloaded';
$noCover = true;
}
$ Info [‘Poster’] содержит данные, подобные этим:
http://ia.media-imdb.com/images/M/MV5BMTM0MDgwNjMyMl5BMl5BanBnXkFtZTcwNTg3NzAzMw@@._V1_SX300.jpg
Это работало некоторое время назад, но как-то остановилось …
Ваше заявление if написано неправильно. !$info['Poster']
средства if $info['Poster'] is not true
, Если есть значение, оно будет переведено в false
как жонглирование типа PHP преобразует любую непустую строку в true
и !
оператор делает это ложным. false
не равно N/A
как жонглирование типа преобразует это в true
(непустые строки всегда true
). false
не равно `истине.
Вы хотите использовать !=
что значит not equal to
if($info['Poster'] != "N/A") {
Просто переместите !
от вашего состояния, и все должно работать как положено. В вашем состоянии вы спрашиваете, является ли $ info [‘Poster’] ложным, и оно не будет ложным, поскольку будет иметь строковое значение. Итак, вы сравниваете логическое значение со строковым значением, значение false всегда будет отличаться от «N / A:
if($info['Poster'] !== "N/A") {
$url = $info['Poster'];
$img = 'images/'.$info["imdbID"].'.jpg';
file_put_contents($img, file_get_contents($url));
echo 'Downloaded';
} else {
echo '!Downloaded';
$noCover = true;
}