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フォルダーからすべてのファビコンを取得し、ランダムに1つを選択します。問題は、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の使用を見ることができます。また、サーバーはこのために適切に構成されている必要があります。私は常に.phpPHPスクリプトを扱うことをお勧めします。

お役に立てれば。

于 2012-05-19T14:25:36.650 に答える
1

これを試して。文字列に一重引用符を使用すると、エスケープ文字の使用に関する問題を回避できます。

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

あなたが試すことができます:

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

未検証。

あなたは正しく脱出をしませんでした。


編集:私は修正版のEvanMulawskiのソリューションを使用します。変更されていないバージョンの方がはるかに読みやすいと思います。

私の変更は次のようになります:

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

これを行うのは、いくつかのシステムでは、nginxのphpが約50msのように少し遅くなることがあるため、Webのどこかで読んだことがあります。

于 2012-05-19T14:05:12.953 に答える
1

私のコメントが述べたように、あなたは引用のいくつかを適切にエスケープしていません。二重引用符の内側にある場合、一重引用符はエスケープされません(その逆)。

echo行を次のように置き換えます。

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

説明:

HTMLをPHPコード内に統合できます。PHPタグを閉じた後、プレーンHTMLでタグを記述linkし、アイコンの場所をエコーする必要がある場合はPHPを使用します。引用符をエスケープしようとするよりもはるかに簡単です。

于 2012-05-19T14:05:30.503 に答える