如何使用php检查网页上是否存在文本,如果为true则执行某些代码?
我的想法是在完成订单后在确认页面上显示一些相关产品 - 如果产品名称出现在页面上,则加载一些产品。但是我不能检查当前的文本。
答案 0 :(得分:1)
案例1 如果您在变量中准备页面,请在脚本末尾回复它,如
$response = "<html><body>";
$response .= "<div>contents text_to_find</div>";
$response .= "</body></html>";
echo $response;
然后您只能使用任何字符串搜索功能搜索字符串
if(strpos($response,"text_to_find") !==false){
//the page has the text , do what you want
}
<小时/> 案例2 如果您没有在字符串中准备页面。你只需回显内容并输出
<?php ?>
标签之外的内容,如
<?php
//php stuff
?>
<HTML>
<body>
<?php
echo "<div>contents text_to_find</div>"
?>
</body>
</HTML>
然后除非您使用output buffering,否则无法抓住所需的文字
<小时/> 案例3 如果您使用输出缓冲 - 我建议 - 如
<?php
ob_start();
//php stuff
?>
<HTML>
<body>
<?php
echo "<div>contents text_to_find</div>"
?>
</body>
</HTML>
然后您可以随时搜索输出
$response = ob_get_contents()
if(strpos($response,"text_to_find") !==false){
//the page has the text , do what you want
}
答案 1 :(得分:0)
您可能需要buffer
您的输出......
<?php
ob_start();
// ALL YOUR CODE HERE...
$output = ob_get_clean();
// CHECK FOR THE TEXT WITHIN THE $output.
if(stristr($output, $text)){
// LOGIC TO SHOW PRODUCTS WITH $text IN IT...
}
// FINAL RENDER:
echo $output;
答案 2 :(得分:0)
最快的解决方案是使用php DOM解析器:
$html = file_get_contents('http://domain.com/etc-etc-etc');
$dom = new DOMDocument;
$dom->loadHTML($html);
$divs = $dom->getElementsByTagName('div');
$txt = '';
foreach ($divs as $div) {
$txt .= $div->textContent;
}
这样,变量$ txt将保存给定网页的文本内容,只要它通常包含在div标签周围。祝你好运!