我需要从HTML示例中删除一些特定的标记。
为了避免使用iframe,我使用curl
并使用getJSON在PHP文件中获取HTML页面。我在my.js得到了结果,
但我不是把整个HTML都粘贴在我自己的div中。
我想这是因为我在一个HTML结构中不能有多个HTML,HEAD和BODY标记。
<!DOCTYPE html>
<html>
<head>
<style>some style</style>
<title>Title of the document</title>
</head>
<body>
The content of the document......
</body>
</html>
现在在上面的结构中我不需要HTML,BODY和HEAD标签,但我确实需要一个CSS的STYLE标签,所以我只想删除HTML,BODY和HEAD标签。
删除后我需要将其附加到我的div(所有这些麻烦都是因为我不想使用iframe)。
我该如何删除它?我想到了strip_tags()
和preg_replace
或一些正则表达式函数,但无法理解最佳方法。
请帮我找到最好的方法。
它可以是PHP,JavaScript或JQuery。
但如果答案是在javascript和jquery,我会赞成,因为我想在我的JS中做这个manupulation但是如果需要PHP也会工作
答案 0 :(得分:1)
使用DOM Parser,regex不能用于解析HTML。
以下示例使用DOMDocument
解析器提取所需的元素。 $html
是使用cURL检索的HTLM文档。
libxml_use_internal_errors(true); //Prevents Warnings, remove if desired
$dom = new DOMDocument();
$dom->loadHTML($html);
$styleNode = $dom->getElementsByTagName("style")->item(0);
$style = $dom->saveHTML($styleNode);
$body = "";
foreach($dom->getElementsByTagName("body")->item(0)->childNodes as $child) {
$body .= $dom->saveHTML($child);
}
echo $style;
echo $body;
假设使用getJson调用此脚本,请使用$style
和$body
创建一个json对象,并将其传递回javascript以插入页面。
据我了解你的问题,这应该是你的申请流程:
客户端加载页面 - &gt; .getJSON调用php脚本 - &gt; php脚本用cURL加载来自其他地方的内容 - &gt;此代码运行 - &gt; json对象被传递回.getJSON - &gt;来自.getJSON的成功回调将新HTML添加到页面
答案 1 :(得分:0)
为什么不使用php中的$ strip_tag var去除异常?