Тип изображения PHP Str_replace

#php #str-replace

#php #str-заменить

Вопрос:

У меня есть XML-канал погоды для приложения. Канал отправляет информацию для .Изображения в формате GIF, но я хочу, чтобы он искал .PNG. Я попробовал STR_REPLACE, но это не сработало.

  $icon = $xml->xpath("/xml_api_reply/weather/forecast_conditions/icon");

   $iconData = str_replace('.gif','.png',$icon);

  echo '<img src="'.get_bloginfo('stylesheet_directory').'/images'.$iconData[2]->attributes().'" />';
  

Немного больше информации :::

Изображения не предоставляются XML-каналом. Только начало URL для них. Таким образом, вывод из XML-канала для, $icon[1] скажем, ig/images/weather/mostly_sunny.gif является . Затем я добавил наш URL в начале и настроил тот же путь, но мне просто нужно, чтобы .gif изменился на .png

Значок ECHO $ [1] после первой строки — это ig/images/weather/mostly_sunny.gif Вот и все.

Комментарии:

1. да? является ли это внешним источником, предоставляющим ленту / изображения?

2. Не изображения. Только начало URL для них. Таким образом, вывод из XML-канала для $ icon [1], скажем, равен ig/images/weather/mostly_sunny.gif . Затем я добавил наш URL в начале и настроил тот же путь, но мне просто нужно, чтобы .gif изменился на .png

3. Если вы echo $icon после первой строки, какой результат? Было бы полезно, если бы вы знали / предоставили эту информацию.

Ответ №1:

Здесь происходит много всего, трудно предсказать, что может произойти.

 $icon = $xml->xpath("/xml_api_reply/weather/forecast_conditions/icon");
  

На данный момент $icon представляет собой массив, возможно пустой, объектов SimpleXMLObject.

 $iconData = str_replace('.gif','.png',$icon);
  

str_replace может принимать массив в качестве третьего аргумента, возможно, что он также преобразует значения в $icon в строки. Результат этого зависит от структуры вашего XML, если icon элементы всегда являются текстом, это должно быть нормально.

 echo '<img src="'.get_bloginfo('stylesheet_directory').'/images'.$iconData[2]->attributes().'" />'
  

Работает ли это вообще? Я бы подумал, что на данный момент $ iconData будет массивом строк, а не массивом объектов SimpleXMLObject.

На вашем месте я бы вручную повторил результаты поиска xpath и явно преобразовал объекты SimpleXMLObject в строки, когда мне было нужно, чтобы они вели себя как строки.

HTH.

Комментарии:

1. Это ничего не делает. Изображение остается gif. Я указал это в вопросе

Ответ №2:

Попробуйте это:

 $iconData = str_replace('.gif','.png',$icon[1]);
echo '<img src="'.get_bloginfo('stylesheet_directory').'/images/'.$iconData.'" />'
  

Итак, вы уверены, что папка на вашей стороне — это ‘stylesheet_directory’ ПЛЮС /images ПЛЮС /ig / images / weather ?

Я думаю, исходная проблема в том, что str_replace предназначен для строк, а вы передали в массив?..