Question

J'utilise str_replace et il ne fonctionne pas correctement. J'ai une zone de texte, qui est entrée envoyée avec un formulaire. Lorsque les données sont reçues par le serveur, je veux changer les nouvelles lignes à « ».

$teams = $_GET["teams"];
$teams = str_replace("\n",",",$teams);
echo $teams;

Bizarrement, je reçois le résultat suivant

Chelsea

, réel

, Barcelone

au lieu de Chealsea, réel, Barcelone.

Qu'est-ce qui ne va pas?

Était-ce utile?

La solution

Pour développer la réponse de Waage, vous pouvez utiliser un tableau pour remplacer les deux ensembles de caractères

$teams = str_replace(array("\r\n", "\n"),",",$teams);
echo $teams;

Cela devrait traiter les deux éléments correctement, comme un seul \n est valide et ne serait pas se faire prendre si vous venez de remplacer \r\n

Autres conseils

Essayez de remplacer "\r\n" au lieu de simplement "\n"

Je rogner le texte et remplacer tous les caractères consécutifs CR / LF par une virgule:

$text = preg_replace('/[\r\n]+/', ',', trim($text))

J'ai eu le même problème, mais trouvé une réponse différente si pensé que je pourrais partager dans le cas où il aide quelqu'un.

Le problème que j'avais était que je voulais remplacer \n avec <br/> pour l'impression en HTML. Le changement simple que je devais faire était d'échapper à la barre oblique inverse str_replace("\n","<br>",($text)) comme ceci:

str_replace("\\n","<br>",($text))
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top