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

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

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

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

челси

, реальный

, Барселона

вместо Челси, настоящая, Барселона.

В чем дело?

4 ответа

Решение

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

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

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

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

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

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

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

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

str_replace("\\n","<br>",($text))
Другие вопросы по тегам