$string = preg_replace('~\R~u', "\r\n", $string);
Si vous ne voulez pas remplacer toutes les nouvelles lignes Unicode mais seulement celles de type CRLF, utilisez :
$string = preg_replace('~(*BSR_ANYCRLF)\R~', "\r\n", $string);
\R
correspond à ces nouvelles lignes, u
est un modificateur permettant de traiter la chaîne d'entrée en UTF-8.
Desde el Docs PCRE :
Ce qu'il faut faire \R
correspondances
Par défaut, la séquence \R dans un motif correspond à n'importe quel newlin Unicode quelle que soit la séquence sélectionnée comme séquence de fin de ligne. [ ] vous spécifiez
--enable-bsr-anycrlf
la valeur par défaut est modifiée de manière à ce que \R ne correspond qu'à CR, LF ou CRLF. Ce qui est sélectionné lors de la construction de PCRE peut être remplacé lorsque la bibliothèque sont appelées.
y
Séquences de retours à la ligne
En dehors d'une classe de caractères, par défaut, la séquence d'échappement \R m toute séquence de nouvelles lignes Unicode. En mode non-UTF-8 \R i suivante :
(?>\r\n|\n|\x0b|\f|\r|\x85)
Il s'agit d'un exemple de "groupe atomique", dont les détails sont donnés ci-dessous. ci-dessous. Ce groupe particulier correspond soit à la séquence de deux caractères CR suivie de LF, soit l'un des caractères LF (saut de ligne, U+000A), VT (tabulation verticale, U+000B), FF (saut de page, U+000C), CR (retour chariot, U+000D), CR (saut de page, U+000D), CR (saut de page, U+000D). retour chariot, U+000D) ou NEL (ligne suivante, U+0085). La séquence de deux caractères est traitée comme une unité unique qui ne peut être divisée.
En mode UTF-8, deux caractères supplémentaires dont les points de code sont supérieurs à 255 sont ajoutés : LS (séparateur de ligne, U+2028) et PS (séparateur de paragraphe, U+2029). La prise en charge des propriétés des caractères Unicode n'est pas nécessaire pour que ces caractères soient pris en compte. pour que ces caractères soient reconnus.
Il est possible de restreindre \R pour ne faire correspondre que CR, LF l'ensemble des fins de ligne Unicode) en définissant l'option PCRE_BSR_ANYCRLF soit au moment de la compilation, soit lors de la recherche du motif. (BSR est une abréviation de "backslash R".) Cette option peut être définie par défaut lorsque PCRE est construit ; si c'est le cas, l'autre comportement peut être l'option PCRE_BSR_UNICODE. Il est également possible de spécifier ces paramètres en commençant une chaîne de caractères par l'une des séquences suivantes :
(*BSR_ANYCRLF) CR, LF, or CRLF only
(*BSR_UNICODE) any Unicode newline sequence
Ces options remplacent les options par défaut et les options données à pcre_compile() ou à pcre_compile2(), mais elles peuvent être remplacées par o pcre_exec() ou pcre_dfa_exec(). Notez que ces paramètres spéciaux, qui ne sont pas compatibles avec Perl, ne sont reconnus qu'au tout début d'un et qu'ils doivent être en majuscules. Si plusieurs d'entre eux sont présents, c'est le dernier qui est utilisé. Ils peuvent être combinés avec un changement de par exemple, un motif peut commencer par :
(*ANY)(*BSR_ANYCRLF)
Ils peuvent également être combinés avec les spécifications (*UTF8) ou (*UCP). A l'intérieur d'une classe de caractères, \R est traitée comme une unr et correspond donc à la lettre "R" par défaut, mais provoque une erreur si PCRE_EXTRA est défini.