Question

Quel serait le meilleur moyen de détecter la méthode de retour à la nouvelle ligne en PHP. CR, LF ou CR + LF

Et si possible, convertissez-le en type spécifié.

Était-ce utile?

La solution

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

Vérifie le type de nouvelle ligne dans la chaîne. 0 est renvoyé quand aucune nouvelle ligne n'est trouvée.

Pour normaliser / normaliser toutes les nouvelles lignes, utilisez la fonction suivante:

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

J'espère que ça aide!

Autres conseils

Ceci testera une chaîne pour un caractère de nouvelle ligne (CR ou LF):

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

( \ r signifie CR et \ n signifie LF)

Vous pouvez utiliser la même pensée pour les convertir. Par exemple, cette fonction convertit tous les CR en LF dans une chaîne donnée:

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

La constante PHP_EOL contient le caractère de nouvelle ligne spécifique à la plate-forme.

Vous pouvez faire un $ string = nl2br ($ string) pour que votre saut de ligne soit changé en

<br />. 

Ensuite, vous pouvez manipuler la chaîne, par exemple. diviser par la première occurrence de

<br />

comme ceci:

list($first, $second) = explode('<br />', $string, 2);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top