2

我正在尝试制作一个脚本,该脚本在每次刷新时都会更改网站图标。

<?php
 $dir = "img/icons/";
 $files = array();
 if ($handle = opendir($dir)) {
   while (false !== ($file = readdir($handle))) {
    $files[] = $file;
   }
 }
 $icon = $files[rand(2,count($files)-1)];
 echo "<LINK REL=\"shortcut icon\" HREF=\'img/icons/'.$icon."\">";
?>

该脚本从 /img/icons 文件夹中获取每个 favicon,并随机选择一个。问题是,当我将它粘贴到我的 HTML 文件中时,页面顶部会出现奇怪的字符“;?>。任何人都可以修复我的脚本吗?

4

4 回答 4

2
<?php
 $dir = "img/icons/";
 $files = array();
 if ($handle = opendir($dir)) {
   while (false !== ($file = readdir($handle))) {
    $files[] = $file;
   }
 }
 $icon = $files[rand(2,count($files)-1)];
 echo '<LINK REL="shortcut icon" HREF="img/icons/'.$icon.'">';
?>

在这里你可以看看在 HTML 中使用 PHP。您的服务器也应该为此正确配置。我总是建议.php处理 PHP 脚本。

希望这可以帮助。

于 2012-05-19T14:25:36.650 回答
1

你可以试试:

echo "<LINK REL=\"shortcut icon\" HREF='img/icons/$icon'>";

未测试。

你没有正确地逃脱。


编辑:我会使用修改后的版本 Evan Mulawski 的解决方案。我认为未修改的版本更容易阅读。

我的修改是:

<link rel="shortcut icon" href="img/icons/<?php echo "$icon" ?>"/>

我这样做是因为在一些系统上,nginx 上的 php 有时会变得有点慢,比如 ~50 毫秒,我在网络上的某个地方读过它。

于 2012-05-19T14:05:12.953 回答
1

正如我的评论所述,您没有正确地转义某些引文。在双引号内时不会转义单引号(反之亦然)。

将您的echo行替换为:

?>
<link rel="shortcut icon" href="<?php echo "img/icons/$icon" ?>"/>

解释:

您可以在 PHP 代码中集成 HTML。关闭 PHP 标记后用纯 HTML编写link标记,并在需要回显图标位置时使用 PHP。这比试图逃避引用要容易得多。

于 2012-05-19T14:05:30.503 回答
1

尝试这个。对字符串使用单引号有助于避免使用转义字符的问题。

echo '<LINK REL="shortcut icon" HREF="img/icons/' . $icon . '">';
于 2012-05-24T12:40:49.703 回答