Как заменить в массиве PHP?

#php #xml

#php #xml

Вопрос:

В настоящее время у меня есть этот код.

 <?php
$username = 'EMAIL ADDRESS';
$password = 'EMAIL ADDRESS';
$opts = array(
  'http' => array(
      'method'  => 'GET',
      'header'  => sprintf("Authorization: Basic %srnUser-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);
?>
 

И я получаю следующие результаты при запуске PHP-кода

Объект SimpleXMLElement ( [@attributes] => Массив ( [version] => 0.3 ) [заголовок] => Gmail — Входящие для АДРЕСА ЭЛЕКТРОННОЙ ПОЧТЫ [слоган] => Новые сообщения в вашем почтовом ящике Gmail [полное количество] => 1 [ссылка] => Объект SimpleXMLElement ( [@attributes] =>Array ( [rel] => альтернативный [href] => http://mail.google.com/mail [тип] => текст / html ) ) [изменено] => 2011-10-27T20:12:38Z [запись] => Объект SimpleXMLElement ( [заголовок] => ТЕМА [ссылка] => Объект SimpleXMLElement ( [@атрибуты] => Массив ( [rel] => альтернативный [href] => ССЫЛКА [тип] => текст / html ) ) [модифицированный] => 2011-10-26T15:45:11Z [выпущенный] => 2011-10-26T15:45:11Z [id] => tag:gmail.google.com ,2004 год:1383746934228011210 [автор] => Объект SimpleXMLElement ( [имя] => Webs [email] => ЭЛЕКТРОННАЯ ПОЧТА ) ) )

Я хочу, чтобы в результатах не отображался «Объект SimpleXMLElement» и т. Д., А отображалась только фактическая полезная информация (тема, содержимое электронной почты, дата и т. Д.)

Я пытался использовать str_replace, но это не работает.

Комментарии:

1. -1 для этого вопроса. Вопрос не отображает никаких исследовательских усилий. @01jayss — print_r ведет себя точно так, как указано в документации . Если он не выполняет то, что вы хотите, возможно, вам нужна другая функция.

2. Жалобы на то, что ваше ванильное мороженое (вывод print_r) на вкус совсем не похоже на стейк (ваш XML-объект), вызывают смех во всех ресторанах вселенной, включая Milliways.

Ответ №1:

Попробуйте что-то вроде:

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

Возможно, вам потребуется добавить несколько дополнительных путей к приведенному выше в зависимости от формата XML.

Вы также можете попробовать

 print_r((array)$xml);
 

как в:

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

какие результаты:

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

Ответ №2:

Использование print_r() даст вам только удобочитаемый вывод. Вы можете преобразовать его в XML или JSON, чтобы он больше соответствовал тому, что вы хотите.

Попробуйте преобразовать в json.

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