PHP ne fonctionne pas correctement str_replace
-
01-10-2019 - |
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?
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))