Определить метод возврата новой строки в PHP
Вопрос
Что было бы лучшим способом обнаружить метод возврата новой строки в 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);