Comment faire pour supprimer les sauts de ligne (pas de caractères!) à partir de la chaîne?
Cela pourrait sembler être une dupe, mais rassurez-vous, il n'est pas - j'ai cherché à la fois, de SORTE que comme le reste de la bande pour une réponse à mon problème et finit par trouver la même insuffisant "solutions" plus et plus. De toute façon, ici, il va:
Je suis d'économie d'entrée de l'utilisateur à partir d'un textarea pour une base de données MySQL (dans un WordPress environnement, mais qui n'aurait pas d'importance à ce problème, je crois). Il est ensuite récupérée à partir de la DB à être montré aux Admins dans le backend du site. Le problème se produit lorsque les utilisateurs soumettent le texte avec des sauts de ligne (c'est à dire appuyer sur la touche Entrée).
Un exemple de chaîne pourrait ressembler à ceci:
Dear friends, I just wanted so Hello. How are you guys? I'm fine, thanks!
Greetings,
Bill
Il n'existe pas de caractères de fin de ligne ("\n", "\r", par exemple) dans la chaîne.
Je suis en utilisant nl2br()
sur elle pour générer du code HTML de sortie, mais cela ne suffit pas. Le résultat est alors:
Dear friends, I just wanted so Hello. How are you guys? I'm fine, thanks!<br />
<br />
Greetings,<br />
Bill
Qui, autant que je le comprends, il est prévu que les nl2br()
résultat, qui insère les balises et n'est pas censé remplacer les sauts de lignes en premier lieu?
Cependant le format que j'ai besoin serait celui-ci:
Dear friends, I just wanted so Hello. How are you guys? I'm fine, thanks!<br /><br />Greetings,<br />Bill
Si la chaîne avait EOL des caractères tels que "\n" en elle, je l'avais frappé avec str_replace()
ou preg_replace()
et être fait avec elle, mais je n'ai aucune idée de ce que l'aiguille de nourrir l'une de ces fonctions, si il n'y a pas de caractères là en premier lieu.
Je peux accéder manuellement le champ correspondant dans la base de données, frapper la touche retour arrière pour chaque saut de ligne et ce que j'ai, plus tard, sur voulez faire avec la chaîne fonctionne. Donc, je sais que j'ai besoin le format ci-dessus.
- Si la chaîne se présente comme votre premier exemple, alors comment pouvez-vous dire qu'il n'a pas de caractères de saut de ligne dans tout ça? Il a au moins deux: deux dans une rangée après "merci!"
- Juste enuff @ErnestFriedman-Hill, vous êtes évidemment droite il y a "quelque chose" là, c'est juste ni visible pas quelque chose que je sais.
- Je ne peux pas voir comment est-il possible d'avoir de nouvelles lignes sans caractères de saut de ligne. Pouvez-vous utiliser un éditeur hexadécimal pour inspecter la chaîne - je suis sûr que vous trouverez les personnages de nouvelles lignes...
Vous devez vous connecter pour publier un commentaire.
Vous devriez être en mesure de le remplacer avec un preg qui supprime tous les sauts de ligne et un retour chariot. Le code est:
Même si le
\n
caractères n'apparaissent pas, si vous obtenez de retour chariot il y a un personnage invisible là. Le preg replace doit saisir et corriger celles-ci./\r|\n|\r\n/
Ben la solution est acceptable, mais str_replace() est de loin plus rapide que preg_replace()
En utilisant moins de puissance CPU, d'un monde réduit émissions de dioxyde de carbone.
$text =str_replace(array("\r", "\n"), ' ', $text);
C'est parce que
nl2br()
ne pas supprimer des lignes nouvelles à tous.Utilisation
str_replace
à la place:Vous pouvez également utiliser PHP garniture
Fonctionne correctement sur Windows je vous conseille d'utiliser
"\r\n"
- pour Windows,"\r"
- pour Mac et"\n"
- pour Linux\r
et\n
sont retirés de la chaîne, pourquoi ne serait-ce pas le cas pour ceux qui suivent directement les uns aux autres?\r\n
sur Windows et ça ne fonctionne pas sur Linux.\r\n
PREMIER permettrait, comme cela signifie une virgule au lieu de deux pour chaque partie si ce saut de ligne\r\n
d'abord, puis de nous remplacer\r
et\n
, j'ai édité ma réponse.\r
et\r
, il n'est pas nécessaire de retirer\r\n
, vous pouvez l'utilisateurstr_replace(array("\r","\n"), "", $buffer);
pour obtenir le même résultat.str_replace(PHP_EOL, null, $str);
Quelque chose d'un peu plus fonctionnel (facile à utiliser n'importe où):
À l'aide de PHP_EOL que la recherche de remplacement paramètre est également une bonne idée! Bravo.
Puisque vous travaillez avec WP, pourquoi ne pas profiter de l'Wordpress wpautop() de la fonction, documentée ici: https://codex.wordpress.org/Function_Reference/wpautop
Essayer: