Bonjour,
Sauriez vous comment, dans un fichier, remplacer les fin de ligne (LF) par un | sans remplacer les retours chariot suivit des fin de ligne (CRLF), en PHP 5.6.
Merci de votre aide
Bonjour,
Sauriez vous comment, dans un fichier, remplacer les fin de ligne (LF) par un | sans remplacer les retours chariot suivit des fin de ligne (CRLF), en PHP 5.6.
Merci de votre aide
strtr() me semble être l'arme idéale pour faire ça:La ruse étant de remplacer les CRLF par eux-mêmes car strtr() ne parcourt qu'une fois la chaîne et donne la priorité à la plus grande correspondance.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 $str = "lapin\ntortue\r\ncarotte\nsalade\r\nchat\nchien\r\nsouris\nhérisson"; $result = strtr($str, ["\r\n" => "\r\n", "\n" => '|']);
Sinon dans une regex, il suffit d'utiliser un test arrière négatif (?<!...) pour vérifier qu'il n'y a pas de CR avant le LF:Mais à mon avis strtr() sera plus rapide.
Code : Sélectionner tout - Visualiser dans une fenêtre à part $result = preg_replace('~(?<!\r)\n~', '|', $str);
Autre méthode plus traditionnelle avec des remplacements successifs: on remplace la partie à protéger par un placeholder avant de remplacer les LFs:
Code : Sélectionner tout - Visualiser dans une fenêtre à part $result = str_replace(['#', "\r\n", "\n", '#!#!', '##'], ['##', '#!#!', '|', "\r\n", '#'], $str);
Brachygobius xanthozonus
Ctenobrycon Gymnocorymbus
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager