Определить метод возврата новой строки в PHP

StackOverflow https://stackoverflow.com/questions/1635486

  •  06-07-2019
  •  | 
  •  

Вопрос

Что было бы лучшим способом обнаружить метод возврата новой строки в PHP. CR, LF или CR + LF

И, если возможно, преобразовать его в указанный тип.

Это было полезно?

Решение

define('NL_NIX', "\n");
define('NL_WIN', "\r\n");
define('NL_MAC', "\r");


function newline_type($string)
{
    if (strpos($string, NL_WIN) !== false) {
        return NL_WIN;
    } elseif(strpos($string, NL_MAC) !== false) {
        return NL_MAC;
    } elseif(strpos($string, NL_NIX) !== false) {
        return NL_NIX;
    }
}

Проверяет, какой символ новой строки находится в строке. 0 возвращается, если новая строка не найдена.

Для нормализации / стандартизации всех новых строк используйте следующую функцию:

function newline_convert($string, $newline)
{
    return str_replace(array(NL_WIN, NL_MAC, NL_NIX), $newline, $string);
}

Надеюсь, это поможет!

Другие советы

Это проверит строку на наличие символа новой строки (CR или LF):

function has_newline($string)
{
    return (strpos($string, "\r") !== false || strpos($string, "\n") !== false);
}

( \ r означает CR, а \ n означает LF)

Вы можете использовать то же мышление, чтобы преобразовать их. Например, эта функция преобразует все CR в LF в данной строке:

function replace_returns($string)
{
    return str_replace("\r", "\n", $string);
}

Константа PHP_EOL содержит символ новой строки для конкретной платформы.

Вы можете сделать $ string = nl2br ($ string), чтобы ваш перевод строки был изменен на

<br />. 

Затем вы можете манипулировать строкой, например, разделить его по первому вхождению

<br />

вот так:

list($first, $second) = explode('<br />', $string, 2);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top