Ваш XML-фид не является допустимым XML: &
должен быть экранирован как &
Это означает, что вы не можете использовать синтаксический анализатор XML для него: - (
Возможное «решение» (чувствует себя неправильно, но должно работать) будет означать замену '&
', которые не являются частью сущности, на &
, чтобы получить действительный XML строка перед загрузкой с помощью синтаксического анализатора XML.
В вашем случае, учитывая это:
$str = <<<STR
<xml>
<link>http://foo.com/this-platform/scripts/click.php?var_a=a&var_b=b&varc=http%3A%2F%2Fwww.foo.com%2Fthis-section-here%2Fperf%2F229408%3Fvalue%3D0222%26some_variable%3Dmeee</link>
</xml>
STR;
Вы можете использовать простой вызов str_replace
, например:
$str = str_replace('&', '&', $str);
И затем проанализируйте строку (теперь XML-допустимо) , которая находится в $str
:
$xml = simplexml_load_string($str);
var_dump($xml);
В этом случае должно работать ...
Но учтите, что вы должны позаботиться о сущностях: если у вас уже есть сущность типа '>
', вы не должны заменять ее на '&gt;
'!
Это означает, что такой простой вызов str_replace
не является правильным решением: он, вероятно, нарушит работу многих XML-фидов!
До вас, чтобы найти правильный способ сделать эту замену - может быть, с каким-то регулярным выражением ...