Подтвердить что ты не робот

Удалить символ новой строки из строки с помощью php regex

Как удалить новый строковый символ из строки с помощью php?

4b9b3361

Ответ 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