0

如何从所有元素节点中删除或清空所有文本节点,而不是从带有 PHP5 DOM 的 HTML 文件中的属性节点中删除或清空?输出的 HTML 必须包含作为原始文件的所有标签和属性(带有表示属性值的文本节点,未触及),但没有文本,就像一个空的 HTML 模板。

4

1 回答 1

0

如果你给我们看一个例子会更清楚。

无论如何,我认为可以使用preg_match函数使用正则表达式来完成。

您应该首先定义哪些是您认为是文本节点的元素,然后使用类似这样的内容,例如:

$finalText = preg_replace( "/\<span\>(.*?)\<\/span\>/is", "$1", $originalText);

在这种情况下,我们将删除跨度节点中包含的文本。

您可以继续使用数组添加表达式,如下所示:

    $a = array(
        "/\[b\](.*?)\[\/b\]/is",
        "/\[i\](.*?)\[\/i\]/is",
        "/\[u\](.*?)\[\/u\]/is",
        "/\[t\](.*?)\[\/t\]/is",
        "/\[d\](.*?)\[\/d\]/is",
        "/\[url=(.*?)\](.*?)\[\/url\]/is",
        "/\[img\](.*?)\[\/img\]/is"
    );

    $b = array(
        "$1",
        "$1",
        "$1",
        "$1",       
        "$1",
        "$2",
        ""
    );  

    $finalText = preg_replace($a, $b, $originalText);
于 2012-11-18T19:39:12.470 回答