Simplexml_load_file не может извлекать данные из URL-адреса

Я использую функцию simplexml_load_file для извлечения данных из URL-адреса, содержащего XML-контент. В URL мало параметров и simplexml_load_file нормально работает.

Но есть несколько параметров, которые содержат & и для них функция simplexml_load_file не работает. Это мой код. Я попробовал функцию urlencoding, но даже эта не работает. Вот как выглядит мой код

$api_url = urlencode($api_url);
$xml = simplexml_load_file($api_url);

Вот как выглядит URL

https://atlas.atdw-online.com.au/api/atlas/products?key=MYKEY&ar=Merimbula & Sapphire Coast&cats=ATTRACTION&size=10

В приведенном выше URL-адресе вы можете видеть, что параметр ar имеет значение, которое содержит & и simplexml_load_file, не работает для параметров этого типа. Любое предложение по этому поводу будет высоко оценено.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
88
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Как вы можете видеть в вашем URL-адресе, амперсанд (&) выполняет две функции:

  • В качестве разделителя для параметров URL.
  • Как символ, входящий в значение такого параметра.

Чтобы избежать двусмысленности, представленной в вашем вопросе, вы обычно urlencode() значения параметра URL.

Затем вы должны сделать что-то вроде $ar = urlencode('Merimbula & Sapphire Coast');. Если вы не можете контролировать, как создается параметр ar, вам придется удалить амперсанд из «Merimbula & Sapphire Coast» и заменить его чем-то другим (например, «и»).

Вместо того, чтобы реализовать функцию urlencode для полного URL-адреса, я реализовал это для параметра, и это сработало для меня. Спасибо!

wplearner 19.12.2020 19:46

Да, вы бы не стали делать это для всего URL-адреса, потому что тогда вы также избежите разделителей параметров, что снова сделает URL-адрес непригодным для использования. :) Приятно знать, что у вас все получилось.

Ro Achterberg 19.12.2020 19:53

Другие вопросы по теме