【发布时间】:2011-02-23 07:55:06
【问题描述】:
我尝试使用 Dom 模型,但运气不佳,getElementByID 对我不起作用。
我不喜欢使用正则表达式,但不知道还能做什么。
这个想法是用新的<div id="content_div"> NEW ALL SORTS HERE </div> 替换<div id="content_div"> all sorts </div>,并在字符串中保留它之前或之后的任何内容。
该字符串是部分 HTML 字符串,更具体地说是来自 wordpress Posts DB。
有什么想法吗?
更新:我标记了这个问题 PHP,但可能应该提到我只在寻找 PHP 解决方案。
更新:代码示例
$content = ($wpdb->get_var( "SELECT `post_content` FROM $wpdb->posts WHERE ID = {$article[post_id]}" ));
$doc = new DOMDocument();
$doc->validateOnParse = true;
$doc->loadHTMLFile($content);
$element = $doc->getElementById('div_to_edit');
所以我尝试了很多代码,这就是我目前所得到的,可能不正确,但我已经破解了一段时间了。
【问题讨论】:
-
为了使用
getElementById,您需要链接到文档的正确DTD 或XSD - 您的主文档是否有Doctype?此外,您目前如何创建和尝试替换元素? -
您能否详细说明“getElementByID 对我不起作用”。 ?它应该做。或者您可以使用原型或 jquery 之类的 javascript 库来更轻松地访问 DOM。
-
document.getElementById 你用 getElementById 打错了吗
-
您是否尝试过在文档上将 validateOnParse-field 设置为 true? $doc->validateOnParse = true;这应该在调用 getElementById() 之前完成
-
即使内容中有名为“ID”的属性,除非您使用的 DTD 指定了 ID 属性是什么,否则您必须使用 setIdAttribute() 指定它。您不是在指定值,而是在指定名称。