php 上的 rss 提要更改时如何播放声音
How to play a sound when rss feed change on php
我有这个 php 可以加载经济新闻的 rss 提要。
rss feed 添加新标题时是否可以播放声音?
我还没有尝试过任何东西,因为我不知道该怎么做。
我想我需要做的是存储标题中的变量,然后比较它,然后调用 javascript 上的函数来播放声音。
<?php
$rss = new DOMDocument();
$rss->load('https://rss.dailyfx.com/feeds/alerts/');
$feed = array();
foreach ($rss->getElementsByTagName('item') as $node) {
$item = array (
'title' => $node->getElementsByTagName('title')->item(0)->nodeValue,
'date' => $node->getElementsByTagName('pubDate')->item(0)->nodeValue,
);
array_push($feed, $item);
}
$limit = 5;
for($x=0;$x<$limit;$x++) {
$title = str_replace(' & ', ' & ', $feed[$x]['title']);
$description = $feed[$x]['desc'];
$date = date('l F d, Y, H:m', strtotime($feed[$x]['date']));
echo '<p><strong><a " title="'.$title.'">'.$title.'</a></strong><br />';
echo '<small><em style="color:red; text-align:center;"> '.$date.'</em> </small></p>';
}
?>
我知道的一种方法是使用 Jquery/Ajax
确保您的目录中有 jquery 文件 jquery.min.js。我还修改了您的 php 代码以使其工作。如果您有任何问题,请告诉我。
<script src="jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
//$('#submit').click(function(){
var title='rssfeed';
$('#loader').fadeIn(400).html('<span>Please Wait, loading.....</span>');
//you can send data if you like
var datasend = "title="+ title;
$.ajax({
type:'POST',
url:'rssfeed.php',
data:datasend,
crossDomain: true,
cache:false,
success:function(msg){
if(msg=='success'){
alert('message successfully loaded');
(new Audio('https://notificationsounds.com/soundfiles/8b16ebc056e613024c057be590b542eb/file-sounds-1113-unconvinced.mp3')).play();
}else{
alert('message loading failed');
}
$('#loader').hide();
}
});
//})
});
</script>
//Display a loading message...
<div id="loader"></div>
您的 php 代码变为
<?php
// ensure there is no error message
error_reporting(0);
$rss = new DOMDocument();
$rss->load('https://rss.dailyfx.com/feeds/alerts/');
$feed = array();
foreach ($rss->getElementsByTagName('item') as $node) {
$item = array (
'title' => $node->getElementsByTagName('title')->item(0)->nodeValue,
'date' => $node->getElementsByTagName('pubDate')->item(0)->nodeValue,
);
array_push($feed, $item);
}
$limit = 5;
for($x=0;$x<$limit;$x++) {
$title = str_replace(' & ', ' & ', $feed[$x]['title']);
$description = $feed[$x]['desc'];
$date = date('l F d, Y, H:m', strtotime($feed[$x]['date']));
//echo '<p><strong><a " title="'.$title.'">'.$title.'</a></strong><br />';
//echo '<small><em style="color:red; text-align:center;"> '.$date.'</em> </small></p>';
//They should be only one echo to trigger success or failure actions in other to play the sound at ajax.
echo "success";
}
?>
我有这个 php 可以加载经济新闻的 rss 提要。 rss feed 添加新标题时是否可以播放声音? 我还没有尝试过任何东西,因为我不知道该怎么做。 我想我需要做的是存储标题中的变量,然后比较它,然后调用 javascript 上的函数来播放声音。
<?php
$rss = new DOMDocument();
$rss->load('https://rss.dailyfx.com/feeds/alerts/');
$feed = array();
foreach ($rss->getElementsByTagName('item') as $node) {
$item = array (
'title' => $node->getElementsByTagName('title')->item(0)->nodeValue,
'date' => $node->getElementsByTagName('pubDate')->item(0)->nodeValue,
);
array_push($feed, $item);
}
$limit = 5;
for($x=0;$x<$limit;$x++) {
$title = str_replace(' & ', ' & ', $feed[$x]['title']);
$description = $feed[$x]['desc'];
$date = date('l F d, Y, H:m', strtotime($feed[$x]['date']));
echo '<p><strong><a " title="'.$title.'">'.$title.'</a></strong><br />';
echo '<small><em style="color:red; text-align:center;"> '.$date.'</em> </small></p>';
}
?>
我知道的一种方法是使用 Jquery/Ajax 确保您的目录中有 jquery 文件 jquery.min.js。我还修改了您的 php 代码以使其工作。如果您有任何问题,请告诉我。
<script src="jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
//$('#submit').click(function(){
var title='rssfeed';
$('#loader').fadeIn(400).html('<span>Please Wait, loading.....</span>');
//you can send data if you like
var datasend = "title="+ title;
$.ajax({
type:'POST',
url:'rssfeed.php',
data:datasend,
crossDomain: true,
cache:false,
success:function(msg){
if(msg=='success'){
alert('message successfully loaded');
(new Audio('https://notificationsounds.com/soundfiles/8b16ebc056e613024c057be590b542eb/file-sounds-1113-unconvinced.mp3')).play();
}else{
alert('message loading failed');
}
$('#loader').hide();
}
});
//})
});
</script>
//Display a loading message...
<div id="loader"></div>
您的 php 代码变为
<?php
// ensure there is no error message
error_reporting(0);
$rss = new DOMDocument();
$rss->load('https://rss.dailyfx.com/feeds/alerts/');
$feed = array();
foreach ($rss->getElementsByTagName('item') as $node) {
$item = array (
'title' => $node->getElementsByTagName('title')->item(0)->nodeValue,
'date' => $node->getElementsByTagName('pubDate')->item(0)->nodeValue,
);
array_push($feed, $item);
}
$limit = 5;
for($x=0;$x<$limit;$x++) {
$title = str_replace(' & ', ' & ', $feed[$x]['title']);
$description = $feed[$x]['desc'];
$date = date('l F d, Y, H:m', strtotime($feed[$x]['date']));
//echo '<p><strong><a " title="'.$title.'">'.$title.'</a></strong><br />';
//echo '<small><em style="color:red; text-align:center;"> '.$date.'</em> </small></p>';
//They should be only one echo to trigger success or failure actions in other to play the sound at ajax.
echo "success";
}
?>