0

こんにちは、将来の onClick アクションのためにアップロードされた画像をプリロードするための php コマンドを組み込んだ JavaScript プリロード スクリプトがあります。とにかく、プリロード スクリプトがプルする最後のイメージから LAST コンマを削除するのに問題があります。

スクリプトは次のとおりです。

<div style="display:hidden">
<script type="text/javascript">
    <!--//--><![CDATA[//><!--
        var images = new Array()
        function preload() {
            for (i = 0; i < preload.arguments.length; i++) {
                images[i] = new Image()
                images[i].src = preload.arguments[i]
            }
        }
        preload(

        <?php
            for ($i = 0; $i < 6; $i++) {
                if (!empty($imgs[$i])) {
                    echo "'http://www.samplegallery.com/upload/image.php?img_source_url=" . $imgs[$i] . "&img_resize_to=500',";
                }
            }
        ?>

        )
    //--><!]]>
</script>
</div>

とにかく、アップロードされた最後の画像から最後のコンマを削除する方法を見つける必要があります。これを行う方法がわからない。私を助けてください!ところで...画像のサイズを変更して透かしに配置するphp画像スクリプトにリンクしているため、画像には拡張子がありません。皆さんが私を理解するのを手伝ってくれることを願っています!

4

5 に答える 5

2

別の方法を考えてください!コンマが最初にある可能性があり、最初のものから削除します:)

if (!empty($imgs[$i])) {
  $comma = $i == 0? '' : ',';
  echo $comma."'http://www.samplegallery.com/upload/image.php?img_source_url=" . $imgs[$i] . "&img_resize_to=500'";
}

$iこの方法は、5、8、または 139871 に等しいかどうかは関係ありません!

于 2013-02-25T22:32:43.143 に答える
1

これを行う最も簡単な方法は、phpビルドインimplode()関数を使用することです

<?php echo implode(',', $imgs); ?>

また、最初の6つの画像だけが必要な場合は、次のような配列を作成できます。

$imgs = array_slice($imgs, 0, 6);

したがって、全体は次のようになります。

preload(
<?php
    $imgs = array_slice($imgs, 0, 6);
    echo implode(',', $imgs);
?>
)
于 2013-02-25T22:35:12.287 に答える
0

文字列から最後のカンマを削除するには、次を使用します。

$string = rtrim($string, ",");
于 2013-02-25T22:35:25.700 に答える
0

foreachを使用できます...

<?PHP 
    if ($count = count($imgs)) {
        foreach ($imgs as $key=>$img) {
            echo "http://www.samplegallery.com/upload/image.php?img_source_url="
            . $img . "&img_resize_to=500";
            if ($key < $count-1) echo ",";
        }
    }

?>
于 2013-02-25T23:00:36.200 に答える
0

あなたの問題に対して少し異なるアプローチを提案してもよろしいですか?データを JavaScript に渡したいときはいつでも、おそらく JSON を生成したいと思うでしょう。json_encode()それをお手伝いします。スクリプトは次のようになります。

var urls = <?php echo json_encode(array_values($imgs)); ?>;

var images = [];
function preload(urls) {
    for (var i = 0; i < urls.length; i++) {
        var url = 'http://www.samplegallery.com/upload/image.php?img_source_url='
            + encodeURIComponent(urls[i])
            + '&img_resize_to=500';

        images[i] = new Image();
        images[i].src = url;
    }
}

preload(urls);

var変数をローカルに保つために、欠落しているセミコロンと宣言を自由に追加したことに注意してください。配列literlではなくarray_values()オブジェクトリテラルになる連想配列ではなく、数値的にインデックス付けされた配列を渡すことを確認するための呼び出しを追加しました。{ ... }[ ... ]

また、URL の構築を JavaScript に移動しました。これは、PHP に保持する理由が見当たらなかったからです。これを PHP で行う必要があり、「手動」ループを回避したい場合は、 を調べてarray_map()ください。

encodeURIComponent()また、渡されたものを適切にエスケープするために、URL フラグメントを実行していることにも注意してください。

セキュリティに関する注意: スクリプトが/upload/image.php任意の URL (または「ローカル ファイル リソース」) を受け入れる場合は、許可されたドメインとパスをホワイトリストに登録することを検討してください。

于 2013-02-25T22:50:38.187 に答える