我正在尝试使用特定字词监控网站的新产品页面。我已经有了一个使用file_get_contents();
搜索单个单词的基本脚本,但这无效。
查看<td>
<table>
标记中的代码
如何让PHP搜索这些单词,无论它们是什么顺序并获得声明? e.g。
$searchTerm = "Orange Boots";
从:
<table>
<td>Boots (Red)</td>
</table>
<table>
<td>boots (ORNAGE)</td>
</table>
<table>
<td>Shirt (Green)</td>
</table>
返回一个匹配。
对不起,如果不清楚,但我希望你理解
答案 0 :(得分:1)
你可以这样做
$newcontent= (str_replace( 'Boots', '<span class="Red">Boots</span>',$cont));
只是为类红色写css,就像你想要显示红色而不是color:red;
并为休息做同样的事情
但更好的方法是DOM和Xpath
答案 1 :(得分:1)
如果您希望对该HTML块进行快速而脏的搜索,可以尝试使用preg_match_all()函数的简单正则表达式。例如,您可以尝试:
$html_block = get_file_contents(...);
$matches_found = preg_match_all('/(orange|boots|shirt)/i', $html_block, $matches);
$matches_found
可以是1或0,作为是否找到匹配的指示。 $matches
将按照相应的任何匹配填充。
答案 2 :(得分:1)
使用卷曲。它比filegetcontents()快得多。这是一个起点:
$target_url="http://www.w3schools.com/htmldom/dom_nodes.asp";
// make the cURL request to $target_url
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$target_url);
curl_setopt($ch, CURLOPT_FAILONERROR, true);
curl_setopt($ch, CURLOPT_AUTOREFERER, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
$html= curl_exec($ch);
if (!$html) {exit;}
$dom = new DOMDocument();
@$dom->loadHTML($html);
$query = "(/html/body//tr)"; //this is where the search takes place
$xpath = new DOMXPath($dom);
$result = $xpath->query($query);
for ($i = 0; $i <$result->length; $i++) {
$node = $result->item(0);
echo "{$node->nodeName} - {$node->nodeValue}<br />";
}