2011-01-12 2 views
3

Скажем, у меня есть текстовое поле, пользователь вводит информацию так же, как в стиле ниже:Textarea в массив или implode?

Ice cream 
Chocolate 

затем передает эту информацию, я хочу, чтобы получить информацию ТОЧНО так:

Ice cream, Chocolate 

Это лучший способ сделать это:

$arr = explode("\n", $var); 
$arr = implode(",", $arr); 

Когда делают это, как это, он помещает информацию из примерно так:

Ice cream , Chocolate 

Обратите внимание на пространство после крема, простенько trim() исправить это?

+0

Трудно проверить? –

ответ

7
$text = preg_replace("~\s*[\r\n]+~", ', ', $text); 
+0

Спасибо :) Это намного чище и работает так, как я этого хочу. – Latox

+0

Как мне это сделать? Скажем, я хотел выбрать «Мороженое, шоколад» и преобразовать его обратно в то, что было изначально, для отображения в текстовой области? – Latox

+0

@Kyle R: uhm, невозможно конвертировать назад, так как пользователь может поместить несколько запятых ** в одну строку **. Я всегда советю хранить данные пользователя как есть, без каких-либо изменений и украшать только в случае необходимости (при отображении) с внесенными изменениями. Это подходит для вашего дела? – zerkms

0

Просто догадаться, но будет ли «\ r \ n» в взрыве исправить проблему? Я знаю, что на компьютерах с ОС Windows появилась новая строка.

1

Dont магазин измененных данных в БД, просто хранить оригинал так, когда вы представить его пользователю они могут редактировать их легко.

Насколько их отображения, когда вы представите вывод в браузере использование регулярных выражений пользователей, как упомянуто zrekms выше

$text = preg_replace("~\s*[\r\n]+~", ', ', $text); 

Выше линии достаточно хорошо.

О BTW для тех, кто хочет взорвать новую строку, но не знаю, как, потому что они отличаются от каждой ОС, Вместо того чтобы делать это ...

$arr = explode("\n", $var); 
$arr = explode("\r\n", $var); 
$arr = explode("\r", $var); 

Просто используйте

$arr = explode(PHP_EOL, $var); 

PHP_EOL эквивалентно новой строке char и ее независимой ОС.