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标签及其属性
谢谢
我个人认为你应该切换到某种类型的XML阅读器(SimpleXML,Document Object Model或XMLReader)来解析HTML文档.我会去的混合DOM,SimpleXML和XPath的提取你需要什么-寄托都还有解析任意文档时就会失败:
$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)