Mark Biek Mark Biek - 2 months ago 9
PHP Question

Forcing a SimpleXML Object to a string, regardless of context

Let's say I have some XML like this

<channel>
<item>
<title>This is title 1</title>
</item>
</channel>


The code below does what I want in that it outputs the title as a string

$xml = simplexml_load_string($xmlstring);
echo $xml->channel->item->title;


Here's my problem. The code below doesn't treat the title as a string in that context so I end up with a SimpleXML object in the array instead of a string.

$foo = array( $xml->channel->item->title );


I've been working around it like this

$foo = array( sprintf("%s",$xml->channel->item->title) );


but that seems ugly.

What's the best way to force a SimpleXML object to a string, regardless of context?

Answer

Typecast the SimpleXMLObject to a string:

$foo = array( (string) $xml->channel->item->title );

The above code internally calls __toString() on the SimpleXMLObject. This method is not publicly available, as it interferes with the mapping scheme of the SimpleXMLObject, but it can still be invoked in the above manner.

Comments