从元素节点中删除文本节点,但不从属性节点类型中删除

时间:2012-11-18 19:06:24

标签: html dom

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

1 个答案:

答案 0 :(得分:0)

如果你向我们展示一个例子,那就更清楚了。

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

首先应该定义哪些元素被视为文本节点,然后使用类似这样的元素:

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

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

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

    $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);