0

我试图构建一个使用“file_get_contents”函数获取内容的页面,我已经管理了这部分。内容最终出现在一个名为 $content 的变量中。这个想法是在内容发生变化时(通过声音)获得警报。

我失败的是我将 $content 的旧值与新值进行比较的部分。不知何故,我必须保留旧值并将其与新值进行比较,当我重新加载页面时,如果 $content 已更改,我想收到警报。我在想我应该使用会话进行比较。这就是我得到的:

<?php
session_start(); 

$_SESSION['red'] = $red;
if($red != $content) {echo "ALERT" . $content = $_SESSION['red'];}
if($red == $content) {echo "Same";}

它不工作,可能看起来像废话,因为我不知道我到底在做什么:)

下面是设置 $content 变量的代码:

$page = file_get_contents('data.htm');
if ( preg_match ( '/<a tabindex="50" class="item_link".*?a>/s', $page, $matches ) )
{
    foreach ( $matches as $key => $content )
    {
        echo $key . ' => ' .  $content  . '<br /><br />';
    }
}
else
{
    echo 'No match';
}
?>

对于警报声音,我找到了一个脚本;

<script>
  var audio = document.createElement('audio');
 document.body.appendChild(audio);
  audio.src = 'http://rpg.hamsterrepublic.com/wiki-images/2/21/Collision8-Bit.ogg';
  setInterval(function(){audio.play();}, 5000);
 </script>

如果 $content 已更改,则需要帮助激活此脚本,以使其仅播放一次。

4

2 回答 2

0

首先,您必须考虑重新运行您的 PHP 代码,您的页面需要刷新。为此,您可以通过元标记使用经典的 html 刷新(我想您只想完成工作,否则您需要一些教程来更好地理解您在做什么)。

其次,您可以将内容存储data.htm在服务器上的文件中(data.htm 应该如何更改并不聪明,我想通过 FTP 或类似的东西,如果它应该通过浏览器更改,请注意这是一个完全不同的故事和你必须遵循一些教程)。

完成此操作后,您可以将file_get_contents结果与存储的文件进行比较,并检查它们是否不相同。如果不是,请打印出您的 javascript 代码以使您的页面响铃并用新获取的内容替换文件的内容(否则将继续响铃)。

没有这种方式的会话。

于 2013-07-04T23:12:37.040 回答
0

我赞扬你谦逊的态度。:)

我认为,一个问题是您编写 if 语句的方式:

if($red != $content) {echo "ALERT" . $content = $_SESSION['red'];} if($red == $content) {echo "Same";}

首先,“。” 在 echo "ALERT" 应该之后,我认为是一个 ';'。其次,使用 else 而不是 2 if 语句。为什么要编写比您需要的代码更多的代码,并且(更重要的是)在您的第一个 if 中的分配使您的第二个 if 为真!

另外,我认为你想在一开始就制作 $red = $_SESSION['red'] ,然后制作 $_SESSION['red'] = $content.

最后,使用 strcmp() 而不是 == 或 != (strcmp() 在比较字符串时更可靠 - 请记住,当字符串匹配时它返回 false)。

所以,你最终得到:

<?php
session_start(); 
$red=(array_key_exists('red',$_SESSION)?$_SESSION['red']:'');

... set up $content

if(strcmp("$red","$content") )
{ // what you've previously read doesn't match the new content
  echo "ALERT";
  // escape back to the html to do the sound stuff
?>
<script>
  var audio = document.createElement('audio');
 document.body.appendChild(audio);
  audio.src = 'http://rpg.hamsterrepublic.com/wiki-images/2/21/Collision8-Bit.ogg';
  setInterval(function(){audio.play();}, 5000);
 </script>
<?php
  $_SESSION['red'] = $content; 
  // so now they both match the new content 
  // - so will give "same" next time round
} else {
  echo "Same";
}
...

试试这个。

于 2013-07-04T23:16:12.270 回答