【问题标题】:PHP Check if page containsPHP 检查页面是否包含
【发布时间】:2011-07-15 10:12:33
【问题描述】:

我正在寻找一个快速的代码/函数来检测页面是否包含特定的东西。

这是为了我正在做的一个新项目。

基本上,用户会将简单的 javascript 代码粘贴到他们的页面中,但我需要确保他们这样做。

我需要一个可以扫描特定网页 url 并找到我提供的代码的代码。

谢谢!

【问题讨论】:

  • 怎么样,我对 stackoverflow 还很陌生。
  • 返回您之前提出的问题,并接受每个问题的最佳答案 - 它是左侧的绿色大勾号。

标签: php


【解决方案1】:

您可以将 URL 的内容作为字符串获取,然后在内容中搜索该代码:

<?php
function check_url($url) {
    $page = file_get_contents($url);
    $code = '<script src="http://example.com/test.js"></script>';
    if (strpos($page, $code) === FALSE) {
        return false;
    } else {
        return true;
    }
}
?>

您可能想将那个简单的strpos 换成正则表达式,但这可以解决问题。

【讨论】:

  • 在网页开头找到脚本时失败。而且没有 ew 正则表达式!而且这里没有给出脚本 MIME 类型:(
  • 如果在页面开头找到字符串,则位置为int(0)。这是一个有效的位置,但您的条件将其视为失败案例。使用===FALSE 严格比较strpos 在失败时返回。
  • 啊,是的,今天我的头没被搞砸!谢谢,更新了我的答案。
【解决方案2】:

您要扫描网页,而不是 URL!您可以通过 URL 访问该网页。 :)

<?php
$contents = file_get_contents("http://some.site/page.html");
$search   = <<<EOF
<script type="text/javascript">
alert('They must have this!');
</script>
EOF;

if (strpos($contents, $search) === FALSE) {
    echo "Naughty webpage!";
}
?>

但请注意,像这样以编程方式浏览页面通常被认为是错误的形式。

【讨论】:

  • 空格不会把这个去掉吗?
  • @jnpcl:怎么会这样?如果您正在查看$search = &lt;&lt;&lt;EOF 行末尾的空格,或者&lt;/script&gt; 行末尾的换行符,那么no
  • @Tomalak:alert() 或结束 &lt;/script&gt; 标记之前的几个空格?
  • 这很容易被 html 缩进或 CRLF 变体抛出。最好事先去掉 $subject 和 $search 文本中的所有空格。
  • @jnpcl:OP 想在网页上搜索一些文本。如果网页上有不在搜索字符串中的空格,那么肯定会失败。这不是一场比赛。如果需求比规定的更复杂并且需要执行一些动态搜索,那么这完全是一个不同的问题。
【解决方案3】:

有很多很棒的库可以抓取像cURL 这样的网站,但在你的情况下,使用它似乎有点过头了。如果您想使用 cURL 库,我向您推荐 Snoopy-class,它使用起来非常简单。

菲利克斯

【讨论】:

  • 并没有真正回答这个问题,而且 php 内置了 file_get_contents,因此不需要库。
【解决方案4】:

你需要做两件事:

1) get the content of remote url

2) 检查内容是否包含您的字符串:

if ( stristr($content, 'your_desired_string') )
{
    echo ' Yes, found';
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-31
    • 2011-06-19
    • 2014-12-25
    • 2019-07-14
    • 2023-03-09
    • 2023-03-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多