Hoe te vervangen in PHP Array?

Ik heb momenteel deze code.

<?php
$username = 'EMAIL ADDRESS';
$password = 'EMAIL ADDRESS';
$opts = array(
  'http' => array(
      'method'  => 'GET',
      'header'  => sprintf("Authorization: Basic %s\r\nUser-Agent: Foobar!", base64_encode($username.':'.$password))
  )
);

$context = stream_context_create($opts);
libxml_set_streams_context($context);
$xml =  new SimpleXMLElement(
    "https://mail.google.com/mail/feed/atom",
    null,
    true);
print_r($xml);
?>

En ik krijg de volgende resultaten als ik de PHP-code gebruik

SimpleXMLElement Object ( [@attributes] => Array ( [version] => 0.3 ) [title] => Gmail - Inbox for EMAIL ADDRESS [tagline] => New messages in your Gmail Inbox [fullcount] => 1 [link] => SimpleXMLElement Object ( [@attributes] => Array ( [rel] => alternate [href] => http://mail.google.com/mail [type] => text/html ) ) [modified] => 2011-10-27T20:12:38Z [entry] => SimpleXMLElement Object ( [title] => SUBJECT [link] => SimpleXMLElement Object ( [@attributes] => Array ( [rel] => alternate [href] => LINK [type] => text/html ) ) [modified] => 2011-10-26T15:45:11Z [issued] => 2011-10-26T15:45:11Z [id] => tag:gmail.google.com,2004:1383746934228011210 [author] => SimpleXMLElement Object ( [name] => Webs [email] => EMAIL ) ) )

Ik wil het zodat de resultaten "SimpleXMLElement Object", enz. Niet weergeven en alleen de daadwerkelijke nuttige info weergeven (onderwerp, e-mailinhoud, datum, enz.)

Ik heb geprobeerd om str_replace te gebruiken, maar het werkt niet.

4
Klagen dat je vanille-ijs (print_r-output) niets smaakt als steak (je XML-object), laat je gewoon lachen om elk restaurant in het universum, inclusief Milliways.
toegevoegd de auteur Marc B, de bron
-1 voor deze vraag. De vraag toont geen enkele onderzoeksinspanning. @ 01jayss - print_r gedraagt ​​zich precies zoals de documentatie zegt dat het zou moeten . Als het niet doet wat je wilt, heb je misschien een andere functie nodig.
toegevoegd de auteur Farray, de bron

2 antwoord

Probeer iets als:

echo "Title: ".$xml->title.", tagline: ".$xml->tagline;

Mogelijk moet u extra paden toevoegen aan het bovenstaande, afhankelijk van de indeling van de XML.

Je zou het ook kunnen proberen

print_r((array)$xml);

als in:

<?php
$xml = "<title>Blah</title>bob";
$s =  simplexml_load_string($xml);
print_r((array)$s);

welke uitgangen:

Array
(
    [title] => Blah
    [fred] => bob
)
1
toegevoegd

Als u print_r() gebruikt, krijgt u alleen een voor mensen leesbare uitvoer. Je kunt het converteren naar xml of JSON om meer in overeenstemming te zijn met wat je wilt.

Probeer om te zetten naar Json.

$json = json_encode($xml);
echo $json;
0
toegevoegd