1

我有一个 PHP 程序,它将网页的 HTML/JavaScript 内容存储在 MySQL 数据库中。使用cURL获取内容,然后在作为长$mysqli->real_escape_string()文本存储在表中之前对其进行处理。

后来,我不得不再次使用 cURL 来获取网页的 HTML/JavaScript 内容并检索我存储在数据库中的内容。

此时,我需要比较它们以查看代码中是否进行了更改。我试过使用:

if ($saved == $content)
   return true;
else
   return false;

但是,即使没有对代码进行任何更改,这也总是返回 false。第二次使用 cURL 时,我没有转义字符串,所以这不是问题。我已经比较了这两段代码,但我无法从视觉上辨别出任何差异。

如何比较这两个字符串,以便准确返回是否进行了任何更改?

我还应该提到,这两个文件都执行得很好,除了第二个总是返回 false。

第一个 PHP 文件:

$url = "www.example.com";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$content = $mysqli->real_escape_string(curl_exec($ch));
curl_close($ch);

$query = "INSERT INTO saved (url, content)
              VALUES ('$url', '$content')";

$mysqli->query($query)

第二个 PHP 文件:

$url = "www.google.com";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$content = curl_exec($ch);
curl_close($ch);

$query = "SELECT content
          FROM saved
          WHERE url = '$url'";

$result = $mysqli->query($query);
$data = $result->fetch_assoc();
$saved = $data['content'];

if ($saved == $content)
    echo '1';
else
    echo '0';
4

2 回答 2

3

计算内容的MD5哈希值并保存。现在只需检查指纹

if($saved['fingerprint'] == $content['fingerprint'])
于 2013-03-22T00:19:16.820 回答
2

如果您只需要比较内容,我的建议是创建数据的校验和(使用MD5或类似方法)并根据校验和比较数据。

于 2013-03-22T00:19:49.713 回答