使用DOM Parser提取文本

时间:2016-09-05 17:40:05

标签: php dom

我刚开始学习DOM Parser。

我们假设在http://test.com中我有 4行,如下所示,我正在尝试将上下文提取为文本。 我只需要LPPR 051600Z 35010KT CAVOK 27/14 Q1020作为JSON有效载荷发送到传入的webhook。

<FONT FACE="Monospace,Courier">LPPR 051600Z 35010KT CAVOK 27/14 Q1020</FONT><BR>

从这个例子中,我怎么能用$ html = str_get_html和$ html-&gt;找到???

我设法发送完整的HTML内容,但这不是我想要的。

<?php

include_once('simple_html_dom.php');
$html = file_get_html('http://test.com')->plaintext;


// The data to send to the API

$postData = array('text' => $html);


// Setup cURL
$ch = curl_init('https://uri.com/test');
curl_setopt_array($ch, array(
    CURLOPT_POST => TRUE,
    CURLOPT_RETURNTRANSFER => TRUE,
    CURLOPT_HTTPHEADER => array(
        'Authorization: '.$authToken,
        'Content-Type: application/json'
    ),
    CURLOPT_POSTFIELDS => json_encode($postData)
));

// Send the request
$response = curl_exec($ch);

// Check for errors
if($response === FALSE){
    die(curl_error($ch));
}

// Decode the response
$responseData = json_decode($response, TRUE);

// Print the date from the response
echo $responseData['published'];
?>

非常感谢

2 个答案:

答案 0 :(得分:0)

您可以使用PHP:DOM替代simple_html_dom

以下示例获取谷歌搜索链接。

<?php
# Use the Curl extension to query Google and get back a page of results
$url = "http://www.google.com";
$ch = curl_init();
$timeout = 5;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$html = curl_exec($ch);
curl_close($ch);

# Create a DOM parser object
$dom = new DOMDocument();

# Parse the HTML from Google.
# The @ before the method call suppresses any warnings that
# loadHTML might throw because of invalid HTML in the page.
@$dom->loadHTML($html);

# Iterate over all the <a> tags
foreach($dom->getElementsByTagName('font') as $link) {
        # Show the <font>
        echo $link->textContent;
        echo "<br />";
}
?>

$dom->getElementsByTagName('font')替换您想要的标记。

快乐刮刮

参考: http://htmlparsing.com/php.html http://php.net/manual/en/book.dom.php

答案 1 :(得分:0)

如果您确定该行与此一行完全相同,则可以

$line = explode('<br>', $response);

这将创建一个数组,每个位置的每一行都有<FONT>xxxxx</FONT>

仅获取第二行的文字

$filteredResponse = strip_tags($line[1]);