如何使用PHP从HTML文件中提取所有文本?

ahm*_*med 0 html php regex parsing html-content-extraction

如何从HTML文件中提取所有文本

我想提取所有文本,alt属性,<p>标签等.

但是我不想在样式和脚本标签之间提取文本

谢谢

现在我有以下代码

    <?PHP
    $string =  trim(clean(strtolower(strip_tags($html_content))));
    $arr = explode(" ", $string);
    $count = array_count_values($arr);
    foreach($count as $value => $freq) {
          echo trim ($value)."---".$freq."<br>";
    }

    function clean($in){
           return preg_replace("/[^a-z]+/i", " ", $in);
    }

    ?>
Run Code Online (Sandbox Code Playgroud)

这很好,但它检索我不想检索的脚本和样式标签,另一个问题我不确定它是否确实检索了alt这样的属性 - 因为strip_tags函数可能会删除所有HTML标签及其属性

谢谢

Ste*_*rig 7

我个人认为你应该切换到某种类型的XML阅读器(SimpleXML,Document Object ModelXMLReader)来解析HTML文档.我会去的混合DOM,SimpleXMLXPath的提取你需要什么-寄托都还有解析任意文档时就会失败:

$dom = new DOMDocument();
$dom->loadHTML($html_content); // use DOMDocument because it can load HTML
$xml = simplexml_import_dom($dom); // switch to SimpleXML because it's easier to use.
$pTags = $xml->xpath('/html/body//p');
$tagsWithAltAttribute = $xml->xpath('/html/body//*[@alt]');
// ...
Run Code Online (Sandbox Code Playgroud)