PHP Str_replace тип изображения - PullRequest
0 голосов
/ 21 мая 2011

У меня есть фид погоды для приложения. Лента рассылает информацию для изображений .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 Feed для $icon[1] скажем, ig/images/weather/mostly_sunny.gif. Затем я добавил наш URL в начале и настроил тот же путь, но мне просто нужно, чтобы .gif изменился на .png

ECHO $ ​​icon [1] после первой строки ig/images/weather/mostly_sunny.gif Вот и все.

Ответы [ 2 ]

1 голос
/ 21 мая 2011

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

$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.

0 голосов
/ 21 мая 2011

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

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

То есть вы уверены, что папка на вашей стороне это каталог 'stylesheet_directory' PLUS / images PLUS / ig / images / weather?

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

...