使用PHP DOM Parser在HTML中查找和替换字符串

时间:2015-11-12 22:22:47

标签: php parsing simple-html-dom domparser findandmodify

如何使用本机PHP DOM Parser在html页面中查找和替换字符串?

要查找的示例字符串:"the <a href='site.com'>company</a> has been growing for the past 5 months";

父级是一个完整的HTML页面,例如该字符串的前一个可以是<div><p>

该元素没有id或class。是否仍然可以找到并操纵它?

没有任何东西可以识别字符串或其前一个字符串。只有确切的字符串,即$ search_string包含的字符序列。

谢谢!

编辑:

$ string_to_replace = "the <a href='site.com'>company</a> has been growing for the past 5 months";

$ replacement_string = "<span class='someClass'>the <a href='site.com'>company</a> has been growing for the past 5 months";</span>

1 个答案:

答案 0 :(得分:1)

由于这似乎跨越了具有子节点的节点的一部分,我将使用这样的替换:

// Text in $html
$find  = "the <a href='site.com'>company</a> has been growing for the past 5 months";
$find_len = strlen( $find );
$start = strpos( $html, $find );
if ( $start !== false ) {
    $html = substr( $html, 0, $start )
        . '<span class="someClass">' . $find . '</span>'
        . substr( $html, $start + $find_len );
}

我没有时间正确测试它,但它可能会指向正确的方向。

PHP DOM非常适合更改元素a或其内容(公司)的href属性。如果$ find是<div> - 元素

的全部内容,它也应该有效