Reputation: 1531
I have the following XML string:
$xml = '<?xml version="1.0" encoding="ISO-8859-1"?>
\n<RESPONSE>\n
<STATUS>OK</STATUS>\n
<ClientID>0</ClientID>\n
<URLREDIRECT>https://www.mywebsite.co.uk/redirect/?tid=1020ca5888bc56018096d1f6eba98d&data=WwB7ACIAQwBsAGkAZQBuAHQASQBEACIAOgAiAHIAYQB0AGQAZQBjADAAMAAxADAAMAAyADAAMgAwADkAOQA5ADMAOQAzADgAOAA4ADIAOAAyADcAMwA3ADMAOAA0ADgANAA3ADgAMQAxADEAOAAyADgAIgAsACIAUwB1AGIASQBEACIAOgAiACIALAAiAEYAaQByAHMAdABOAGEAbQBlACIAOgAiAFMAaQBkAG4AZQB5AGUAcgBwACIALAAiAFMAdQByAE4AYQBtAGUAIgA6ACIAUwBtAGkAdABoAGUAcgB0AHQAdABwACIALAAiAE0AbwBiAGkAbABlACIAOgAiADAANwAwADAAMAAwADAANgA3ADYAOQAiACwAIgBFAG0AYQBpAGwAIgA6ACIAcwBpAGQAbgBlAHkALgBzAG0AaQB0AGgANgA3ADYAOQBAAHIAZwByAG8AdQBwAC4AYwBvAC4AdQBrACIALAAiAFAAbwBzAHQAQwBvAGQAZQAiADoAIgBTAEUANgAgADgAUgBUACIALAAiAEgAbwB1AHMAZQBOAHUAbQBiAGUAcgAiADoAIgBSAGkAYwBoAG0AbwBuAGQAIABIAG8AdQBzAGUAIgAsACIATgB1AG0ARABlAGIAdABzACIAOgAiADIAIgAsACIARABlAGIAdABsAGUAdgBlAGwAIgA6ACIAMgAwADAAMAAiACwAIgBBAGYAZgBvAHIAZABhAGIAaQBsAGkAdAB5ACIAOgAiADgAMAAiAH0AXQA=
</URLREDIRECT>\n
</RESPONSE>';
I am trying to decode the string as follows:
$decodedXML = html_entity_decode($xml, ENT_XML1);
and then interpret as an object:
$xml = simplexml_load_string($decodedXML);
However, upon running the simplexml_load_string() function, I am receiving the following error:
html_entity_decode() expects parameter 2 to be long, string given in
...
I am not sure if this is due to the way I am decoding the XML string? Any suggestions?
Upvotes: 0
Views: 102
Reputation: 19512
The error message is triggered by the ENT_XML1 constant. If it is unknown by your PHP version, PHP will use the constant name as a string. The function does not support a string as the second argument.
To avoid errors like this, always develop with error level E_ALL, showing notices. PHP will throw an notice that the constant is unknown and used as a string.
But decoding the XML entities of an XML string can break it. Be careful.
Upvotes: 1
Reputation: 505
Get rid of the \n characters and use CDATA to keep the URL from being parsed:
<?xml version="1.0" encoding="ISO-8859-1"?>
<RESPONSE>
<STATUS>OK</STATUS>
<ClientID>0</ClientID>
<URLREDIRECT><![CDATA[https://www.mywebsite.co.uk/redirect/?tid=1020ca5888bc56018096d1f6eba98d&data=WwB7ACIAQwBsAGkAZQBuAHQASQBEACIAOgAiAHIAYQB0AGQAZQBjADAAMAAxADAAMAAyADAAMgAwADkAOQA5ADMAOQAzADgAOAA4ADIAOAAyADcAMwA3ADMAOAA0ADgANAA3ADgAMQAxADEAOAAyADgAIgAsACIAUwB1AGIASQBEACIAOgAiACIALAAiAEYAaQByAHMAdABOAGEAbQBlACIAOgAiAFMAaQBkAG4AZQB5AGUAcgBwACIALAAiAFMAdQByAE4AYQBtAGUAIgA6ACIAUwBtAGkAdABoAGUAcgB0AHQAdABwACIALAAiAE0AbwBiAGkAbABlACIAOgAiADAANwAwADAAMAAwADAANgA3ADYAOQAiACwAIgBFAG0AYQBpAGwAIgA6ACIAcwBpAGQAbgBlAHkALgBzAG0AaQB0AGgANgA3ADYAOQBAAHIAZwByAG8AdQBwAC4AYwBvAC4AdQBrACIALAAiAFAAbwBzAHQAQwBvAGQAZQAiADoAIgBTAEUANgAgADgAUgBUACIALAAiAEgAbwB1AHMAZQBOAHUAbQBiAGUAcgAiADoAIgBSAGkAYwBoAG0AbwBuAGQAIABIAG8AdQBzAGUAIgAsACIATgB1AG0ARABlAGIAdABzACIAOgAiADIAIgAsACIARABlAGIAdABsAGUAdgBlAGwAIgA6ACIAMgAwADAAMAAiACwAIgBBAGYAZgBvAHIAZABhAGIAaQBsAGkAdAB5ACIAOgAiADgAMAAiAH0AXQA=]]></URLREDIRECT>
</RESPONSE>
Upvotes: 0