2015-05-23 4 views
3

Я использовал PHP Simple HTML DOM Parser сначала преобразовать HTML строку в объект DOM с помощью метода str_get_html() simple_html_dom.phpКак преобразовать объект simple_html_dom обратно в строку?

$summary = str_get_html($html_string); 
  1. Затем я извлек <img> объект из $summary по

    foreach ($summary->find('img') as $img) { 
        $image = $img; 
        break; 
    } 
    

    сейчас Мне нужно было преобразовать объект DOM объекта изображения обратно в строку. Я использовал Object Oriented way mentioned here:

    $image_string = $image->save(); 
    

    я получил ошибку (от Мудл отладчика):

    Fatal error: Call to undefined method simple_html_dom_node::save() ...

  2. Так я думал, так как я работаю с Moodle, это может иметь что-то делать с Moodle, поэтому я просто сделал простой (не объектно-ориентированный?) way from the same manual:

    $image_string = $image; 
    

    Тогда просто проверить/подтвердить, что он был преобразован в строку, я сделал:

    echo '$image TYPE: '.gettype($image); 
    echo '<br><br>'; 
    echo '$image_string TYPE: '.gettype($image_string); 
    

    Но это печатает:

    $image TYPE: object 
    
    $image_string TYPE: object 
    

Так вопрос: почему ??? Я делаю что-то неправильно?

ответ

2

Вы просто бросить его в строку обычным способом:

$image_string = (string)$image 
+0

О, это здорово. Я не пробовал. Благодарю. – Solace

2

Использование outertext

$image_string = $image->outertext(); 

Я посмотрел в коде. функция save возврат

$ret = $this->root->innertext(); 

Но это метод класса simple_html_dom. После поиска вы получите объект simple_html_dom_node. Он не имеет такого метода и не наследует. Но имеет text, innertext и outertext.

+0

Спасибо, но это хорошо «взломать», не так ли? У вас есть идея, почему не описаны методы, описанные в руководстве? – Solace

+1

Это из документов :) Я использую только такой способ и не знаю о сохранении :) – splash58

+0

[Здесь!] (Http://simplehtmldom.sourceforge.net/manual.htm) См. Раздел «Как сбросить содержимое Объект DOM? и нажмите _tabs_ под названием «Быстрый путь» и «Объектно-ориентированный путь». – Solace

1

$ image-> текст(); это работало для меня

+0

Я не могу найти функцию 'text()' в [Справочной системе API] (http://simplehtmldom.sourceforge.net/manual_api.htm) – Solace

+1

yup это не в api но когда вы var_dum ($ image), вы увидите этот метод – Shaffan

Смежные вопросы