Le principal problème que vous rencontrez avec toutes les variantes que vous avez essayées est que \n
et \r
sont des caractères d'échappement qui ne sont échappés que lorsque vous les utilisez dans une chaîne entre guillemets .
En PHP, il y a une grande différence entre '\r\n'
et "\r\n"
. Notez les guillemets simples dans le premier et les guillemets doubles dans le second.
Donc :'\r\n'
donnera une chaîne de quatre caractères contenant une barre oblique, un 'r', une autre barre oblique et un 'n', tandis que "\r\n"
contiendra deux caractères, ceux-ci étant les caractères de nouvelle ligne et de retour chariot.
La réponse directe à votre question est donc que vous devez utiliser le deuxième des exemples que vous avez donnés dans la question, mais avec des guillemets doubles au lieu de guillemets simples :
$text = str_replace("\r\n",'', $text);
Il convient de souligner que cela supprimera tous nouvelles lignes à partir de l'entrée et remplacez-les par rien. S'il y a plus d'une nouvelle ligne dans l'entrée, elles seront toutes supprimées. Sans en savoir plus sur votre application, je ne sais pas si c'est ce que vous voulez, mais voici quelques réflexions :
-
Si vous souhaitez uniquement supprimer les lignes vides (et autres espaces blancs) de la fin de la chaîne d'entrée, vous pouvez utiliser le
trim()
fonction à la place. -
Si vous souhaitez conserver la mise en forme pour la sortie en HTML, alors le
nl2br()
fonction vous aidera. Si vous souhaitez sortir au format HTML sans formatage, vous n'aurez peut-être pas besoin de les supprimer, car le navigateur n'affichera pas les sauts de ligne à partir de \n caractères. -
Si vous remplacez les nouvelles lignes par rien, comme dans votre exemple, le dernier mot de la première ligne se retrouvera désormais directement dans le premier mot de la deuxième ligne, et ainsi de suite. Vous préférerez peut-être les remplacer par un espace plutôt que rien.
-
Il est possible que les utilisateurs soumettent l'entrée avec seulement
\n
sans le\r
correspondant , ou vice-versa (cela peut être dû à leur système d'exploitation ou à leur navigateur, ou à un piratage délibéré, ou à un certain nombre d'autres raisons). Si vous voulez remplacer tous instances de ces deux personnages, un moyen plus fiable de le faire serait de les remplacer individuellement, plutôt que de compter sur eux côte à côte.str_replace()
vous permet de le faire en les spécifiant dans un tableau. Vous pouvez également utiliserstrtr()
oupreg_replace()
pour atteindre le même objectif.
J'espère que ça aide.