2015-08-08 31 views
0

我想在這段代碼的輸出中刪除最後一個字符:如何刪除最後一個字符(從數組創建字符串時用逗號)?

$images = "image1,image2,image3"; 
$images = explode(',', $images); 

foreach ($images as $image) { 
    echo "'$image',"; 
}} 

電流輸出:

'image1','image2','image3', 
         //^ See here 

預期輸出:

'image1','image2','image3' 
         //^ See here 
+0

對不起,我更新@ Script47 – Dows

+1

看起來像在建設排序JSON或CSV名單的脆弱的嘗試。 – mario

回答

4

只要保持簡單並使用implode(),例如

<?php 

    $images = "image1,image2,image3"; 
    $arr = explode(",", $images); 
    echo "'" . implode("','", $arr) . "'"; 

?> 

輸出:

'image1','image2','image3' 
+0

我個人認爲'rtrim'會更簡單,但每個都是自己的。 – Script47

+0

非常感謝.. @ Script47 – Dows

+0

編輯我的問題並感謝@ Rizier123 – Dows

1

rtrim($string, ",")將刪除尾隨逗號。 rtrim

trim($string, ",")將消除拖尾和先行逗號。在你的代碼trim

看它會在你的情況很有用implode

implode(",", $images) 

破滅並沒有把一個逗號結尾,只有變量

+0

如何?我不明白。請添加示例..謝謝 – Dows

+0

刪除foreach循環。只需添加:echo(implode(「,」,$ images)); – Patrick2607

1

選項1

之間

在循環數據時,將其添加到字符串中,然後使用PHP's rtrim function刪除結尾的逗號。

$images = "image1,image2,image3"; 
$images = explode(',', $images); 

foreach ($images as $image) { 
    $string .= "'$image',"; 
} 

echo rtrim($string, ','); 

選項2

如果你真的想進入它,你可以使用正則表達式和PHP preg_replace

$images  = "image1,image2,image3"; 
$patterns  = ['/(^)/', '/($)/', '/,/']; 
$replacements = ["'", "'", "','"]; 

echo preg_replace($patterns, $replacements, $images); 

這將消除循環,內爆,爆炸的需要等。

1

這將刪除從$字符串後面的逗號。

rtrim($string, ",") would remove trailing commas.

我不知道如何將這種標記爲重複,但這裏是另一種也被標記爲重複(Remove the last character from string)。 答案是我把上面

+1

問題標記下的標記鏈接,然後按照說明操作。我做了這個。 – Script47

1

刪除字符串的最後一個字符鏈接你可以把它割下使用substr()

$text = "image,"; 
echo substr($text, 0, strlen($text) - 1); // "image" 

它讀取一切從第零字符到最後一個字符減一個(即省略最後一個字符)。

如果你知道的最後一個字符是什麼,如image,(逗號),那麼你可以修剪:

$text = "image,"; 
echo rtrim($text, ','); // "image" 

將從字符串末尾刪除所有,字符。

1

你好,你可以使用Implode。

$images = "image1,image2,image3"; 
$images = explode(',', $images); 
echo "'".implode("','",$images)."'"; 

輸出將是:

'image1','image2','image3' 
2

看起來我們沒有足夠的解答。所以這是另一個小小的方法。

如果有一個逗號分隔的列表已經和它只是需要報價,那麼一個愚蠢的正則表達式就足夠了:

$images = "image1,image2,image3"; 
echo preg_replace("~[^,]+~", "'$0'", $images); 
#      ↑   ↑ 
#   anything but commas ↑ 
#       wrap in quotes 

避免了需要手動循環過的東西,或後處理結果。

+1

我在你的答案中丟失了一些unicode箭頭:] – Rizier123

+1

哦。你是對的。這非常消極。 :↑ – mario

1

讓我建議另一種解決方案。在我看來,這將是一個更清晰一點:

$images = "image1,image2,image3"; 

$quotified = array_map(
       function($x) { 
        // Add quotes... You can also add trim() here 
        // ...or do some another 'purifying' things 
        // ...that will be applied to each image list element 
        return "'$x'"; 
       }, 
       explode(',', $images) 
      ); 

$images = implode(",", $quotified); 
相關問題