[PHP] virer retours chariot d'une chaine

Jef.p18 -  
 Mello -
salut j'utilise la fonction str_replace pour essayer d'enlever les retours chariot (=chr(13) d'une chaine avant de la stocker en base de données ... mais rien y fait ! quand je teste avec un simple echo ils sont bien remplacés mais subsiste un espace bizarroïde. et quand je balance le tout a mysql mes retours chariot sont toujours là !!! :-///

// retraitement du texte à insérer
$news = str_replace(chr(13), "-", $_REQUEST['news_input']);

// execution sql 1
$sql1_query = mysql_query("
INSERT INTO mtg_news (date, joueur, news)
VALUES ('"
. $annee . "-" . $mois ."-" . $jour . "','"
. strtolower(trim(substr($_REQUEST['joueur_input'], 0, 100))) . "','"
. $news . "')"
) or die (mysql_error());

merci !
+

9 réponses

nicodragon
 
$n = str_replace(CHR(13),"",$n); $n = str_replace(CHR(10),"",$n);

c'est bien mais

$n = str_replace(CHR(13).CHR(10),"",$n);

c'est mieux.

Merci pour votre aide car j'avais oublié comment on faisait. (vive google) LoL
24
Julien
 
C'est effectivement cette solution qui est la meilleur et qui peut se décliner comme ceci:

$tab = array( CHR(13) => " ", CHR(10) => " " );
$n = strtr($n,$tab);

Ce qui permet d'ajouter facilement d'autres caractères ou chaines à remplacer facilement dans le tableau.
0
Mello
 
Pour ma part j'aurais fait :
$n = str_replace(PHP_EOL,"",$n);

Ca évite les problème potentiel d'OS de l'hébergeur :)
0