如何用php DomXpath解析html,修改保存
How to parse html with php DomXpath, modify and save
谷歌搜索后找不到与我的问题相关的任何内容。
问题是:我解析页面,找到一个 table [有四个 table].
当我找到后,我想将 one/some row/rows 添加到 table。但我不知道该怎么做。一些类似的问题与解析 xml 和查看内容有关。
在代码中我有这样的东西:
$dom = new DOMDocument();
$dom->loadHTML($output->getHTML());
$xpath = new DOMXPath($dom);
$tableProp = $xpath->query('//*[@class="smwb-factbox"][2]');
....
$dom->asHTML();
解决方法很简单:
使用 createElement、setAttribute 和 appendChild 等方法集,我解决了我的问题,示例如下:
$dom = new DOMDocument();
$dom->loadHTML(mb_convert_encoding($output->getHTML(), 'HTML-ENTITIES', 'utf-8'));
$xpath = new DOMXPath($dom);
$tableProp = $xpath->query('//*[@class="smwb-factbox"][2]');
...
$th_el = $dom->createElement('th', $th_outer_inner_span_a_el);
...
$td_el = $dom->createElement('td', '');
$td_el->appendChild($td_el_outer_span);
$tr_el = $dom->createElement('tr', '');
$tr_el->setAttribute('class', 'smwb-propvalue');
$tr_el->appendChild($th_el);
$tr_el->appendChild($td_el);
$tableProp->item(0)->appendChild($tr_el);
$dom->saveHTML();
...
这个想法很简单。
我在 mediawiki 中有 table,找到它,创建新行并在保存后插入它。就这些了。
谷歌搜索后找不到与我的问题相关的任何内容。 问题是:我解析页面,找到一个 table [有四个 table].
当我找到后,我想将 one/some row/rows 添加到 table。但我不知道该怎么做。一些类似的问题与解析 xml 和查看内容有关。
在代码中我有这样的东西:
$dom = new DOMDocument();
$dom->loadHTML($output->getHTML());
$xpath = new DOMXPath($dom);
$tableProp = $xpath->query('//*[@class="smwb-factbox"][2]');
....
$dom->asHTML();
解决方法很简单: 使用 createElement、setAttribute 和 appendChild 等方法集,我解决了我的问题,示例如下:
$dom = new DOMDocument();
$dom->loadHTML(mb_convert_encoding($output->getHTML(), 'HTML-ENTITIES', 'utf-8'));
$xpath = new DOMXPath($dom);
$tableProp = $xpath->query('//*[@class="smwb-factbox"][2]');
...
$th_el = $dom->createElement('th', $th_outer_inner_span_a_el);
...
$td_el = $dom->createElement('td', '');
$td_el->appendChild($td_el_outer_span);
$tr_el = $dom->createElement('tr', '');
$tr_el->setAttribute('class', 'smwb-propvalue');
$tr_el->appendChild($th_el);
$tr_el->appendChild($td_el);
$tableProp->item(0)->appendChild($tr_el);
$dom->saveHTML();
...
这个想法很简单。 我在 mediawiki 中有 table,找到它,创建新行并在保存后插入它。就这些了。