Я использую str_replace, и он работает неправильно. У меня есть текстовая область, вход которой отправляется с формой. Когда данные принимаются сервером, я хочу изменить новые строки на «,».
$teams = $_GET["teams"]; $teams = str_replace("\n",",",$teams); echo $teams;
Как ни странно, я получаю следующий результат:
челси
, реальный
, Барселона
вместо Чеалсы, реальной, Барселоны.
Что не так?
Чтобы расширить ответ от 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))