8768 sujets

Développement web côté serveur, CMS

Bonjour,

Comment placer un retour chariot ("\n\r") au sein d'une fonction php str_replace() ?

Pour l'instant j'ai fait un truc assez moche mais qui fonctionne :
str_replace( [ '><' ], [  '>
<' ], $stringHtml);

Bien sûr j'aimerais ne pas avoir à sauter une ligne dans le php...
Modifié par Olivier C (02 Jun 2016 - 07:40)
Olivier C a écrit :
Bonjour,

Comment placer un retour chariot ("\n\r") au sein d'une fonction php str_replace() ?

Pour l'instant j'ai fait un truc assez moche mais qui fonctionne :
str_replace( [ '&gt;&lt;' ], [  '&gt;
&lt;' ], $stringHtml);

Bien sûr j'aimerais ne pas avoir à sauter une ligne dans le php...

Bonjour Olivier,
N'étant pas expert PHP, je ne peux te communiquer la solution propre à ce langage, mais si mes souvenirs sont exacts, il doit être possible d'insérer une valeur Unicode dans l'expression (ex. \uXXXX en Java).
À confirmer...
Bon, j'ai finalement trouvé avec une syntaxe bien pourrie :
str_replace( [ '><' ], [  ">" . PHP_EOL . "<" ], $stringHtml);

Ou encore :
str_replace( [ '><' ], [  ">" . "\r\n" . "<" ], $stringHtml);


Ce qui a au moins eu le mérite de me faire connaitre la constante php PHP_EOL pour le retour à la ligne. Je n'ai donc plus qu'à supprimer ma constante perso que j'avais créé dans le même but et qui du coup fait doublon...
Olivier C a écrit :
Bon, j'ai finalement trouvé avec une syntaxe bien pourrie :
str_replace( [ '&gt;&lt;' ], [  "&gt;" . PHP_EOL . "&lt;" ], $stringHtml);

Ou encore :
str_replace( [ '&gt;&lt;' ], [  "&gt;" . "\r\n" . "&lt;" ], $stringHtml);


Ce qui a au moins eu le mérite de me faire connaitre la constante php PHP_EOL pour le retour à la ligne. Je n'ai donc plus qu'à supprimer ma constante perso que j'avais créé dans le même but et qui du coup fait doublon...

Je persiste...
echo str_replace("><",">\x0A\x0D<",$stringHtml)

Testé OK sur site PHP en ligne (à la faute de frappe près car je répond depuis un portable).
str_replace("><",">\x0A\x0D<",$stringHtml);

Je confirme : ta solution fonctionne. Je n'utiliserais cependant que l'une des deux solutions car il semble qu'elles ne soient pas compatibles entre elles.

En effet, si l'on peut ajouter des retours chariots avec "\x0A\x0D", j'ai essayé de supprimer des espaces déjà existant en parsant avec ce caractère unicode et je n'y suis pas arrivé.

No problemo avec PHP_EOL ou "\r\n", ces deux derniers sont donc a priori équivalents.
Olivier C a écrit :
str_replace("&gt;&lt;","&gt;\x0A\x0D&lt;",$stringHtml);

Je confirme : ta solution fonctionne. Je n'utiliserais cependant que l'une des deux solutions car il semble qu'elles ne soient pas compatibles entre elles.

En effet, si l'on peut ajouter des retours chariots avec "\x0A\x0D", j'ai essayé de supprimer des espaces déjà existant en parsant avec ce caractère unicode et je n'y suis pas arrivé.

No problemo avec PHP_EOL ou "\r\n", ces deux derniers sont donc a priori équivalents.

Je ne sais pas dans quel contexte tu utilises le parsing des sauts de ligne.
A priori, l'utilisation des caractères Unicode semble possible. Par exemple, pour remplacer tous les sauts de ligne, le passage du tableau suivant en premier paramètre de str_replace devrait fonctionner :
["\x0A","\x0D","\x0A\x0D","\x0D\x0A"]

Je viens de remplacer cette séquence par un "_" dans une chaîne de caractères et ça a fonctionné.