如何让PHP输出声音(哔哔声)?

4
这段 Python 代码的 PHP 版本是什么?
import winsound
winsound.Beep(537, 2000)
7个回答

9

PHP主要用于Web服务器,那么有什么用在那里哔哔叫,而且你不能通过PHP在用户计算机上发出哔哔声,因为PHP被翻译成HTML,而HTML没有这种方法。

如果您想使用Win32调用,请查看:如何从PHP中进行Win32 API调用?还有Win32 Beep函数

但是,如果您想在用户浏览器中播放哔哔声,最好将音频嵌入到HTML中本身。

编辑:仅哔哔声的另一种方法

<?php
  function beep ($int_beeps = 1) {
    for ($i = 0; $i < $int_beeps; $i++): $string_beeps .= "\x07"; endfor;
    isset ($_SERVER['SERVER_PROTOCOL']) ? false : print $string_beeps;
  }
?>

如果通过浏览器运行,这段代码不会产生任何效果;如果通过 shell 运行,它将会产生 $int_beeps 次可听的蜂鸣声。该代码可以在 Windows、Unix 等操作系统上运行。


1
信不信由你,但是使用PHP和GTK+甚至可以制作桌面应用程序... - Tor Valamo
我认识一个人,如果我不经常攻击他因为过于热衷于 PHP 的话,他可能会做这件事... :P - Tor Valamo
1
也许他需要在每次网络访问时在服务器上发出蜂鸣声...就像盖革计数器一样。想一想,这个主意并不那么糟糕 :) - Stefano Borini
@unknown 这是因为没有简单的、等效的 PHP 版本。 - deceze
我向你展示了方法,你指的是等效的PHP。我认为除了嵌入音频(可以像Justin说的那样使用Flash),或者使用Win32 API来进行服务器操作之外,没有其他方法。 - Priyank Bolia
显示剩余4条评论

3
这个代码使用标准/内置的蜂鸣声。(更像是“咚”的声音)
而且在任何平台上都可以使用。
超级简单,只需复制粘贴代码。
function beep()
{
    fprintf ( STDOUT, "%s", "\x07" );
}


2
我尝试了Tor Valamo建议的方法,但仍然无法播放声音。
当我使用以下代码时,屏幕上只会显示chr(7)的表示,而没有声音:
system('cmd /k go.bat')

如果我使用以下代码,将得不到任何内容:
exec('cmd /k go.bat')

我使用以下任一选项代替:

exec('start /MIN go.bat')
exec('cmd.exe /k start /MIN go.bat')

唯一的副作用是cmd.exe会闪烁,因此/min参数确保它只在任务栏中闪烁。

1
更新:算了,我以为你只是想要一个“哔”声,而不是一个音调。
旧帖子,没有回答问题:
你需要制作一个.bat文件,所以: 打开cmd
copy con go.bat [Enter]
@echo off [Enter]
echo [Ctrl+G] [Enter]
[Ctrl+Z] [Enter]

这看起来像是:

C:\DEV\test>copy con go.bat
@echo off
echo ^G
^Z
    1 file(s) copied.

现在你只需要通过exec()或system()等方式从PHP中调用go.bat。但是你需要通过cmd来创建go.bat,以便Ctrl+G字符正确。

但是你仍然看不到频率和持续时间,你需要使用Win32 Beep API来实现。 - Priyank Bolia

0

当然有人用PHP编写GUI应用程序 - 这就是wxPHP的用途。

安装mpg321 - 一个小巧的声音应用程序:

exec("mpg321 --quiet --gain 10 /path/to/beep.mp3");

0

简单易懂的方法:

你可以从 HTML 中获取帮助:

echo "<audio src='http://freesoundeffect.net/sites/default/files/incorrect-answer--6-sound-effect-99679566.mp3' autoplay ></audio>"; 

这段代码可以在后台播放蜂鸣声,并且你可以更改 .mp3 文件。

0

这会生成一个哔哔声,但与winsound不同,它不允许您指定频率、持续时间

function cli_beep()
{
    if (is_callable('ncurses_beep')) {
        ncurses_beep();
        ncurses_flash();
    } else {
        fprintf(STDOUT, "%s", "\x07");
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接