2015-06-10 4 views
0

Я использую DOMDocument, чтобы найти и вырезать некоторые HTML-элементы, которые я не хочу использовать в переменной PHP $table_data_for_db. Необработанная версия $table_data_for_db поставляется с некоторыми HTML-тегами, которые я не хочу. Итак, я использую приведенный ниже код, чтобы избавиться от некоторых тегов (и контента в этих тегах), а затем сохранить оставшийся HTML в моей БД.Проблема с выходом из DOMDocument

Вот код, я использую для создания $table_data_for_db ...

$table_data_for_db = $_POST['table_data']; 

    $dom = new DOMDocument; 
    $dom->loadHTML($table_data_for_db); 
    $xPath = new DOMXPath($dom); 
    $nodes = $xPath->query('//*[@id="problem_header"]'); 
    if($nodes->item(0)) { 
     $nodes->item(0)->parentNode->removeChild($nodes->item(0)); 
    } 
    $nodes = $xPath->query('//*[@id="border_row"]'); 
    if($nodes->item(0)) { 
     $nodes->item(0)->parentNode->removeChild($nodes->item(0)); 
    } 
    $nodes = $xPath->query('//*[@id="fraction_class"]'); 
    if($nodes->item(0)) { 
     $nodes->item(0)->parentNode->removeChild($nodes->item(0)); 
    } 

    $table_data_for_db = $dom->saveHTML(); 

Проблема заключается в том, что я получаю выход, как это ... Более того же ...

Где нежелательны <!DOCTYPE html..., <html><head> и </head></html>.

В настоящее время у меня есть решение на месте, где я использую str_replace, чтобы избавиться от нежелательных элементов перед вставкой в ​​БД, но это похоже на взлома. Есть лучший способ сделать это?

ответ

1

Почему вы удалили свой другой пост? Если вы хотите изменить свой вопрос, просто используйте функцию редактирования. Во всяком случае, мой ответ на ваш следующий:

Это функция saveHTML, которая помещает дополнительный код. Для того, чтобы убедиться, что он не ставит его, использовать это для вашей функции loadHTML:

$dom->loadHTML($table_data_for_db, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD); 

По http://php.net/manual/en/libxml.constants.php вам нужно будет по крайней мере версии: PHP 5.4 и Libxml 2.7.8

+0

Я не видел, что у него были ответы. Сожалею. Я попробую это и обновить. – gtilflm

+0

Я только что получил «Предупреждение: DOMDocument :: loadHTML() ожидает точно 1 параметр, 2 заданный в /path/to/my/script.php в строке 19' – gtilflm

+0

Да, я просто опубликовал ваш ответ, когда вы удалили вопрос. Это препятствует людям, пытающимся помочь вам, когда вы удаляете вопрос. – kojow7

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