Как удалить новый строковый символ из строки с помощью php?
Удалить символ новой строки из строки с помощью php regex
Ответ 1
$string = str_replace("\n", "", $string);
$string = str_replace("\r", "", $string);
Ответ 2
$string = str_replace(PHP_EOL, '', $string);
или
$string = str_replace(array("\n","\r"), '', $string);
Ответ 3
Чтобы удалить несколько новых строк, рекомендуется использовать регулярное выражение:
$my_string = trim(preg_replace('/\s\s+/', ' ', $my_string));
Ответ 4
Лучше использовать,
$string = str_replace(array("\n","\r\n","\r"), '', $string)
.
Потому что некоторые разрывы строк остаются такими же, как и из ввода textarea.
Ответ 5
Что-то более функциональное (удобное в использовании):
function strip_carriage_returns($string)
{
return str_replace(array("\n\r", "\n", "\r"), '', $string);
}
Ответ 6
Попробуйте это Его работа для меня
Сначала удалите n
из строки (используйте двойную косую черту перед n
),
Затем удалите r
из строки, например n
КОД:
$string=str_replace("\\n",$string);
$string=str_replace("\\r",$string);
Ответ 7
Используйте strtr
Вот самый быстрый способ избавиться от новых строк:
// method 1
$s = strtr($s,"\n\r"," ");
Это заменит только новые строки пробелами. На самом деле, это желательно, когда вы обрабатываете HTML-тексты; он не объединяет слова в конце строк (например, "bro" в конце и "Ken" в следующей строке не станет "broKen"). Между тем, он очень-очень быстрый, не меняет длину строки (экономит много данных!) И не требует ничего, кроме обработки на уровне символов, которая безумно эффективна. (В отличие от предоставления массивов в strtr, который заметно медленнее)
Теперь, если по какой-то причине вы хотите удалить символы новой строки:
// method 2
$s = strtr($s,["\n"=>"","\r"=>""]);
// method 3
$s = preg_replace('/[\r\n]/','',$s);
Эти методы работают почти с одинаковой скоростью с достаточно короткими текстовыми строками. Но с более тяжелой полезной нагрузкой (текст 4 МБ) начинают проявляться небольшие различия:
Длинные струны
4MB text with 70 thousand line breaks:
- method 1: 3.26ms // strtr("")
- method 2: 8.58ms // strtr([]) is slower
- method 3: 6.05ms // preg beats strtr! never expected that!
4MB text with 1.3 million line breaks:
- method 1: 3.26ms // stays the same, no matter how many replaces!
- method 2: 33.12ms // more work to do, slower execution
- method 3: 55.73ms // preg performs worst this time
Метод 1 является абсолютным победителем. Неважно, сколько символов он должен заменить - он касается всего один раз и только один раз.
Метод 2 и 3: когда есть что заменить, strtr с массивами гораздо эффективнее, чем preg. В случае обычного текста (с 80-100 символами в строке) preg немного превосходит strtr; тем не менее, в этом случае я бы тоже пошел на strtr. Но да, preg на удивление быстр, особенно по сравнению с тем, на что он способен.
TL;DR:
- если результат метода 1 достаточно хорош, всегда используйте его;
- в противном случае ожидаемое количество разрывов строк должно определять соответствие;
- всегда будь собой, если не будешь Бэтменом.
Примечание по PHP_EOL: я видел ответы, в которых упоминалась эта константа, предлагая заменить только "официальную" последовательность конца строки, например CRLF для окон. Теперь это обычно ошибка: хотя это кажется супер-подходящим, он будет неправильно обрабатывать файлы, если они не были созданы на одной платформе. Вы работаете в Linux, вы обрабатываете файл, загруженный из Windows - увы, вы полны "\ r". Так что не надо. Это только для операций на одной платформе.
Ответ 8
должно хватить stripcslashes (удаляет\r\n и т.д.)
$str = stripcslashes($str);
Возвращает строку с удаленными обратными слешами. Распознает C-подобные\n,\r..., восьмеричные и шестнадцатеричные представления.
Ответ 9
function removeP($text){
$key=0;
$newText="";
while ($key < strlen($text)) {
if(ord($text[$key])==9 or ord($text[$key])==10){
//$newText .= '<br>';//uncomment this if you want <br> to replace that spacial characters;
}else{
$newText .= $text[$key];
}
// echo $k."'".$t[$k]."'=". ord($t[$k])."<br>";
$key++;
}
return $newText;
}
$myvar = removeP("your String");
Примечание: здесь я не использую php regex, но все же вы можете удалить символ новой строки
Это удалит все символы новой строки, которые не были удалены функциями preg_replace, str_replace или trim