Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Forcing a SimpleXML Object to a string, regardless of context

Tags:

php

xml

simplexml

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?

like image 776
Mark Biek Avatar asked Jan 06 '09 13:01

Mark Biek


1 Answers

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.

like image 112
Aron Rotteveel Avatar answered Oct 12 '22 02:10

Aron Rotteveel