#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 предназначен для строк, а вы передали в массив?..