За последние 24 часа нас посетили 17774 программиста и 1677 роботов. Сейчас ищут 860 программистов ...

Проблема с DOM, помогите

Тема в разделе "Прочие вопросы по PHP", создана пользователем RFire, 7 июл 2008.

  1. RFire

    RFire Активный пользователь

    С нами с:
    7 июл 2008
    Сообщения:
    3
    Симпатии:
    0
    Здравствуйте! В общем передо мной стоит следующая задача:
    В БД хранится HTML код, мне нужно оттуда его вытащить, подсветить код из тега "<code></code>" и вывести всё это добро в браузер.

    Примерно вот так я делаю (в данном коде просто пытаюсь вывести подсвеченный код из тега <code></code>):
    Код (Text):
    1.  
    2. <?php
    3.   $codeText = "<i>Ха-ха-ха</i><code><?php echo \"test\"; ?></code><b>Гагагага</b><code>Normal Text</code>";
    4.   $doc = new DomDocument;
    5.   $doc->loadHTML($codeText);
    6.   $codes = $doc->getElementsByTagName('code');
    7.   for ($i = 0; $i < $codes->length; $i++)
    8.   {
    9.     echo highlight_string($codes->item($i)->nodeValue, true)."<hr />";
    10.   }
    11. ?>
    Проблема заключается в том, что когда получаю текстовую информацию заключенную в теги <code></code>возвращается только текст, без тегов и т.п. Мне нужно, что бы я мог получить текст со всеми тегами, атрибутами и т.п.

    Заранее огромное спасибо!

    P.S.
    Замена символов HTML-эквивалентами (&lt; &gt; и т.п.) не подкходит

    P.S.S.
    Первый раз работаю с DOM в PHP, поэтому может спрашиваю глупость :wink:
     
  2. AlexGousev

    AlexGousev Активный пользователь

    С нами с:
    25 мар 2006
    Сообщения:
    1.505
    Симпатии:
    0
    Адрес:
    Москва
    А здесь не DOM'ом надо, потому как не HTML это.
    <?php
    $codeText = "<i>Ха-ха-ха</i><code><?php echo \"test\"; ?></code><b>Гагагага</b><code>Normal Text</code>";
    preg_match_all('%<code>(.*?)</code>%', $codeText, $m);
    foreach ($m[1] as $code)
    highlight_string($code);
    ?>