Pergunta

Qual seria a melhor maneira de detectar o método de retorno da Newline no PHP. CR, LF ou CR+LF

E se possível, converta -o para o tipo especificado.

Foi útil?

Solução

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;
    }
}

Verifica que tipo de nova linha está na string. 0 é retornado quando nenhuma nova linha é encontrada.

Para normalizar/padronizar todas as linhas de novo uso da seguinte função:

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

Espero que ajude!

Outras dicas

Isso testará uma string para um caractere novo (CR ou LF):

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

(\r significa cr e \n significa LF)

Você pode usar o mesmo pensamento para convertê -los. Por exemplo, esta função converte todos os CRs em LFs em uma determinada string:

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

A constante PHP_EOL Contém o caractere de nova linha específico da plataforma.

Você pode fazer um $ string = nl2br ($ string) para que sua quebra de linha seja alterada para

<br />. 

Então você pode manipular a corda, por exemplo, dividi -la pela primeira ocorrência de

<br />

assim:

list($first, $second) = explode('<br />', $string, 2);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top