如何检查网页上是否有文字?

时间:2016-09-13 13:30:12

标签: php

如何使用php检查网页上是否存在文本,如果为true则执行某些代码?

我的想法是在完成订单后在确认页面上显示一些相关产品 - 如果产品名称出现在页面上,则加载一些产品。但是我不能检查当前的文本。

3 个答案:

答案 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标签周围。祝你好运!