2013-02-25 43 views
0

嗨PHP最後一個逗號我有一個包含一個PHP命令預加載上傳的圖片爲未來的onClick動作一個JavaScript預加載腳本。無論如何,我無法從預加載腳本從最後一張圖片中刪除最後一個逗號。去除出是進入一個javascript圖像預加載腳本

下面是腳本:

<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> 

無論如何,我需要找出如何從上傳的最後一張圖像刪除最後一個逗號。不知道如何做到這一點。請幫幫我! BTW ...因爲它們鏈接到調整大小並把它們放入一個水印一個PHP腳本的圖像圖像不具有擴展名。希望你們能幫助我身材!

回答

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沒關係!

+1

謝謝!這是一個偉大的思考方式。感謝您如此快速地幫助我。你的資產!我已經將這種想法納入未來。 – Brandon 2013-02-25 23:31:43

+0

我很高興看到:) – martriay 2013-02-25 23:41:32

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); 
?> 
) 
0

刪除str中的最後一個逗號只是使用這個:

$string = rtrim($string, ","); 
+0

注意。在這種情況下,如果沒有逗號,最後一個字符將被刪除。更好的是,我們在這種情況下使用最後一個字符。 – 2013-02-25 23:20:43

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聲明,讓您的局部變量的自由。我已經加入了array_values()通話,以確保你傳遞一個數字索引數組,而不是將導致對象文本{ ... },而不是一個數組literl [ ... ]關聯數組。

我也感動了URL建設的JavaScript,因爲我不明白了一個道理,以保持它在PHP。如果您需要這是在PHP,並希望避免「手動」循環,看看array_map()

還請注意,我正在你的網址片段通過encodeURIComponent()正確逃生不管它是你正在傳遞

對安全性的說明:你應該在/upload/image.php腳本接受任意網址(或「本地文件資源「),請考慮清單列出允許的域和路徑。

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 ","; 
     } 
    } 

?>