HTML 使用 PHP 变量嵌入视频不起作用

HTML embed video using PHP variable doesn't work

我正在尝试使用以下代码在网页上显示所有视频,我已经能够遍历文件、打印文件名和嵌入视频。但是视频显示为灰色并且无法播放,我怀疑我在代码中使用 $filename 时做错了什么。

<?php
$dir = new DirectoryIterator(dirname(__FILE__));
foreach ($dir as $filename) {
    if (!$filename->isDot()) {

        if ($filename != "index.php" and $filename != "error_log") {

            echo $filename, "<br>"; 

            echo '<video width="400" controls="controls" preload="metadata">
            <source src=$filename type="video/mp4"></video>';

            echo "<br><br>";
        }

    }
}
?>

它是这样显示的:

改变

<source src=$filename type="video/mp4"></video>';

<source src="'.$filename.'" type="video/mp4"></video>';

你 echo $filename 就像一个字符串,而不是 PHP 变量。

记住,如果用单引号 ' 回显,它会像字符串一样回显,而用双引号 " 回显会回显 PHP 变量读取它们的值。关于 PHP 中字符串的信息是 nicley 解释的,例如here .

您可以将您的代码 echo HTML video 更改为:

echo '<video width="400" controls="controls" preload="metadata"><source src="' . $filename . '" type="video/mp4"></video>';

请注意,HTML video 标签 src 属性 也缺少双引号,我在上面的代码中添加了它们。

干杯

您的 php 变量在 single quotes 内,并且(来自文档)特殊字符的变量和转义序列出现在单引号字符串中时不会展开。

作为替代方案,您可以将字符串放在单引号之间并使用 sprintf ,这将 return 格式化字符串并使用例如 %s 来指定参数应该作为字符串类型处理。

echo sprintf('<video width="400" controls="controls" preload="metadata">
<source src="%s" type="video/mp4"></video>',
    $filename);