PHP str_replace работает неправильно

Я использую str_replace, и он работает неправильно. У меня есть текстовая область, вход которой отправляется с формой. Когда данные принимаются сервером, я хочу изменить новые строки на «,».

$teams = $_GET["teams"]; $teams = str_replace("\n",",",$teams); echo $teams; 

Как ни странно, я получаю следующий результат:

челси

, реальный

, Барселона

вместо Чеалсы, реальной, Барселоны.

Что не так?

Solutions Collecting From Web of "PHP str_replace работает неправильно"

Чтобы расширить ответ от Waage, вы можете использовать массив для замены обоих наборов символов

 $teams = str_replace(array("\r\n", "\n"),",",$teams); echo $teams; 

Это должно обрабатывать оба элемента должным образом, так как единственный \n является допустимым и не будет попадать, если вы просто заменили \r\n

Попробуйте заменить "\r\n" вместо "\n"

Я бы обрезал текст и заменил все последовательные символы CR / LF запятой:

 $text = preg_replace('/[\r\n]+/', ',', trim($text)) 

У меня была такая же проблема, но я нашел другой ответ, поэтому подумал, что буду делиться им, если это кому-то поможет.

Проблема была в том, что я хотел заменить \n на <br/> для печати в HTML. Простым изменением, которое я должен был сделать, было избежать обратной косой черты в str_replace("\n","<br>",($text)) следующим образом:

 str_replace("\\n","<br>",($text))