我试图使用“file_get_contents”函数构建一个获取内容的单个页面,我已经管理了这个部分。内容最终出现在名为$ 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已更改,需要帮助激活此脚本,也只需播放一次。
答案 0 :(得分:0)
首先,您必须考虑重新运行PHP代码,您的页面需要刷新。 要实现这一点,您可以使用经典的html refresh through meta tag(我想您只需完成任务,否则您需要一些教程来更好地了解您正在做的事情。)
其次,你可以将data.htm
的内容存储在服务器上的一个文件中(data.htm应该改变的方式并不聪明,我想通过FTP或类似的东西,如果它应该通过浏览器改变,请注意,这是一个完全不同的故事,你必须遵循一些教程。)
完成此操作后,您只需将file_get_contents
结果与存储的文件进行比较,然后检查它们是否相同。如果不是,请打印出您的javascript代码,让您的页面响起,并用新获取的内容替换文件内容(否则将继续响铃)。
没有这种方式的会议。
答案 1 :(得分:0)
我赞扬你的自我表达态度。:)
我认为,问题在于你编写if语句的方式:
if($ red!= $ content){echo“ALERT”。 $ content = $ _SESSION ['red'];} if($ red == $ content){echo“Same”;}
首先,'。'回声“ALERT”之后,我认为是';'。 其次,使用else而不是2 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";
}
...
试试这个。