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))
У меня была та же проблема, но я нашел другой ответ, поэтому подумал, что поделюсь, если это кому-нибудь поможет.
Проблема была в том, что я хотел заменить \n
с <br/>
для печати в HTML. Простое изменение, которое я должен был сделать, это избежать обратной косой черты в str_replace("\n","<br>",($text))
как это:
str_replace("\\n","<br>",($text))