Я использую функцию 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, не работает для параметров этого типа.
Любое предложение по этому поводу будет высоко оценено.






Как вы можете видеть в вашем URL-адресе, амперсанд (&) выполняет две функции:
Чтобы избежать двусмысленности, представленной в вашем вопросе, вы обычно urlencode() значения параметра URL.
Затем вы должны сделать что-то вроде $ar = urlencode('Merimbula & Sapphire Coast');. Если вы не можете контролировать, как создается параметр ar, вам придется удалить амперсанд из «Merimbula & Sapphire Coast» и заменить его чем-то другим (например, «и»).
Да, вы бы не стали делать это для всего URL-адреса, потому что тогда вы также избежите разделителей параметров, что снова сделает URL-адрес непригодным для использования. :) Приятно знать, что у вас все получилось.
Вместо того, чтобы реализовать функцию urlencode для полного URL-адреса, я реализовал это для параметра, и это сработало для меня. Спасибо!