如何在服务器端仅对某个HTML字符串的某些元素进行修改?

时间:2011-11-21 作者:chamberlainpi

是否有类似于jQuery工作方式的在服务器端(PHP)上选择/执行DOM操作的方法?

例如,如果我想修改<pre class="raw">...</pre> 在jQuery中,您可以通过以下方式轻松捕获帖子内容中的所有元素:

//In jQuery, this will obtain a collection of <PRE> elements with class "raw":
$("pre.raw").each( function(index,tag) {
    //Modify content of each PRE tags here...
    tag.innerHTML = tag.innerHTML.replace( ..., ... );
});
然而,在PHP中,我试图通过在“the\\u content”中添加一个过滤器来实现这一点,然后只在每个过滤器中进行一些字符串替换<pre class="raw"> 元素。

WordPress是否已经有了一些内置的实用方法来以这种方式获取元素?或者是否有第三方PHP脚本可以实现这一点?

2 个回复
最合适的回答,由SO网友:marcochiesi 整理而成

您还可以看看phpQuery.

SO网友:chamberlainpi

回答我自己(也许还有其他一些对这个问题好奇的开发人员),有一个PHP服务器端脚本可以像jQuery一样操纵DOM:

http://simplehtmldom.sourceforge.net/index.htm

虽然语法不完全相同(没有使用美元$符号作为jQuery对象),但功能基本相同。

示例(摘自上述链接):

$html = file_get_html(\'http://www.google.com/\');

// Find all images 
foreach($html->find(\'img\') as $element) 
       echo $element->src . \'<br>\';

// Find all links 
foreach($html->find(\'a\') as $element) 
       echo $element->href . \'<br>\';

结束