使用PHP从网站中获取标记ID,类或其他内容中的标记

时间:2014-08-16 00:27:11

标签: php html parsing tags domdocument

我被困住了。我试图从远程网站中提取预定义标签内的所有html标签,其属性和文本内容。

实施例: <div id="its attributes">its text content</div>

我可以使用php的DOMDocument类使用他们的id或类提取任何标记,我只是不能告诉php限制返回到预定义标记。

实施例: <div id="predefined">... return all this ...</div>

我没有任何代码示例,因为我已尝试过众多搜索中的众多选项,并且所有选项都会返回错误结果。

你能帮忙吗?

更新:我在这里找到了答案: PHP function to grab all links inside a <DIV> on remote site using scrape method

感谢所有帮助。

2 个答案:

答案 0 :(得分:0)

您可以使用getElementById,然后访问nodeValue

$doc->loadHTML('<html><body><div id="predefined">... return all this ...</div></body></html>');
$i = $doc->getElementById('predefined');
echo $i->nodeValue;

答案 1 :(得分:0)

如果您想了解JavaScript和jQuery:

假设这个HTML:

<div id="predefined">... return all this ...</div>

使用此JavaScript代码(使用jQuery)(我试图让它变得简单,但如果你学得很好,你会做得更好):

// To get the content from a single HTML tag
var theID = "predefined";
var theContent = $("#" + theID).text(); // Or .html() if you want the whole content

// To POST the extracted content to your PHP page in order to write to your mySQL db
$.ajax({
    type: "POST",
    url: "http://www.myapp.com/mypage.php",
    data: { id: theID, content: theContent },
    success: function(response){ // just in case you need a response from your PHP stuff
        alert(response);
    }
});

然后在你的PHP“http://www.myapp.com/mypage.php”中:

<?php
    $id = $_POST["id"];
    $content = $_POST["content"];

    // Note: Always sanitize posted data, to prevent injections and other malicious code.

    // Here you can save the data to your MySQL db

    echo "it worked!"; // This is the response that your "success" function will get in your Javascript code
?>

好吧,我不确定这是你特殊情况的最佳答案,但无论如何你真的应该学习JavaScript =)