试图使用php domdocument获取明文

时间:2014-01-29 09:59:42

标签: php html domdocument

我试图从给定的HTML获取明文。但是,我不可能。 为此,我所做的是

我的html位于$content变量

现在,我将$ content变量传递给php DomDocuemnt

$d = new DOMDocument();
@$d->loadHTML($content)

我的下一步是从获得的HTML获取明文。

请帮帮我。提前谢谢!

2 个答案:

答案 0 :(得分:3)

我无法理解您的问题但是如果您想将HTML代码作为字符串 试试这个......

$d = new DOMDocument();
$d->loadHTML($content);
$plainText = $d->textContent;
echo $plainText;

答案 1 :(得分:0)

DOM本身不具有此功能。您可以使用strip_tags()函数。像这样:

$d = new DOMDocument();
$d->loadHTML($content);
$plainText = strip_tags($d->textContent);
echo $plainText;

// which is probably equivalent to:
$plainText = strip_tags($content);

注意:使用DOMDocument()可用于测试$content是否正确或是否要获取特定标签($main = $d->getElementByName('<main>'); $plainText = strip_tags($main[0]->textContent)),否则直接使用strip_tags()足够。

存在一些问题,因为strip_tags()函数不知道要删除的标签的类型。这意味着一个序列,例如:

... word</p><p>more ...

将连接这两个词:

... wordmore ...

这是一个困难问题,因为某些标签预计会以这种方式删除,而另一些标签则不会删除。例如,如果用户强调某种形式,则没有空格是删除标签的正确方法:

che<u>val<u>   -> cheval
che<u>veaux<u> -> cheveaux

(法语中“马”的单数和复数)

浏览器也不知道,CSS告诉标签是块(<div>还是内联(<u>)。