2015-08-08 3 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" 

Он читает все от zeroeth характера вплоть до последний символ минус один (т.е. опускание последнего символа).

Если вы знаете, что последний символ, например, в 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

Мне не хватает стрелок в Юникоде в вашем ответе:] – 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);