ereg_replace et apostrophe

kek
Eléphanteau du PHP | 16 Messages

04 déc. 2005, 17:30

Hello !

j'ai un petit bleme, que je n'ai pas trouvé en fouillant dans le forum..

Je veux faire un ereg_replace sur un mot qui contient une apostrophe genre :

Code : Tout sélectionner

$texte = ereg_replace("(c'est cool)", "Génial", $texte);
Mais le hic c'est que ça ne convertit pas le "c'est cool". J'ai essayé en mettant "c\'est cool", mais pareil, marche pô..

si qqun a une idée ?

thx !
kek
www.zanorg.com
trucs à la con

Mammouth du PHP | 19672 Messages

04 déc. 2005, 17:34

De la manière dont tu as écrit ton code, ça devrait remplacer "(c'est cool)" mais pas "c'est cool" : si les parenthèses ne sont pas trouvées, alors le test retourne false et ne remplace rien.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

kek
Eléphanteau du PHP | 16 Messages

04 déc. 2005, 17:40

ah oui désolé, c'est parce qu'en fait j'ai plusieurs mots à remplacer, mon code est du genre :

Code : Tout sélectionner

$texte = ereg_replace("(c'est cool|c'est super|l'éclate)", "Génial", $texte);
mais bon j'ai essayé pour 1 mot en virant les parenthèses et ça marchait pas non plus..
www.zanorg.com
trucs à la con

Mammouth du PHP | 19672 Messages

04 déc. 2005, 17:49

Essaye comme ça, chez moi, ça fonctionne:
<?php
$texte = "c'est cool le PHP et en programmant c'est l'éclate";
$masque = "(c'est cool|c'est super|l'éclate)";
$retour = ereg_replace($masque, "Génial", $texte);
echo("<p>". $retour ."</p>");
?>
J'obtiens en retour:
Génial le PHP et en programmant c'est Génial
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

kek
Eléphanteau du PHP | 16 Messages

04 déc. 2005, 18:05

nope ça marche pas non plus..
si je copie colle ton code dans un fichier php ça fonctionne, mais en fait ma variable $texte provient d'un formulaire que l'utilisateur rempli. Envoyé par POST.

peut-être que les apostrophes sont codées différement du coup ?
www.zanorg.com
trucs à la con

Mammouth du PHP | 19672 Messages

04 déc. 2005, 18:18

Sans voir le code, je suis incapable de te répondre.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

kek
Eléphanteau du PHP | 16 Messages

04 déc. 2005, 18:23

Bin y a rien de compliqué dans le code en fait, je récupère une variable $texte d'un champ de texte textarea :
$texte = $_POST["texte"];
$masque = "(c'est cool|c'est super|l'éclate)";
$texte = ereg_replace($masque, "Génial", $texte);
$texte = ereg_replace("(\r\n|\n|\r)", "<br/>", $texte);

$sql  = "INSERT INTO $blogcomments values ('','$texte','$nom','$email','$url','$urlimg',$newdate_jour,$newdate_mois,$newdate_annee,'$newdate_heure','$ip','$host',$REF)";
$requete = @mysql_query($sql);
www.zanorg.com
trucs à la con

Mammouth du PHP | 19672 Messages

04 déc. 2005, 18:37

Essaye ça te raconte nous ce que ça donne :
<?php
$texte = $_POST["texte"];
echo("<p>Version originale : ". $texte ."</p>");
$masque = "(c'est cool|c'est super|l'éclate)";
$texte = ereg_replace($masque, "Génial", $texte);
echo("<p>Version corrigée : ". $texte ."</p>");
$texte = nl2br($texte);
echo("<p>Version avec retours de ligne : ". $texte ."</p>");

$sql  = "INSERT INTO $blogcomments values ('','". $texte ."', '". $nom ."', '". $email ."', '". $url ."', '". $urlimg ."', ". $newdate_jour .", ". $newdate_mois .", ". $newdate_annee .",'". $newdate_heure ."', '". $ip ."', '". $host ."', ". $REF .")";
$requete = mysql_query($sql);
?>
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

kek
Eléphanteau du PHP | 16 Messages

04 déc. 2005, 18:48

Bon alors là avec ton code ça me sort ça :

Code : Tout sélectionner

Version originale : c\'est cool le php, trop de la balle c\'est super Version corrigée : c\'est cool le php, trop de la balle c\'est super Version avec retours de ligne : c\'est cool le php, trop de la balle c\'est super
Donc j'ai ajouté un
$texte = stripslashes($texte);
et ça marche nickel, puisque ça me routourne ça maintenant :

Code : Tout sélectionner

Version originale : c'est cool le php, trop de la balle c'est super Version corrigée : Génial le php, trop de la balle Génial Version avec retours de ligne : Génial le php, trop de la balle Génial
Mais par contre, si j'écris d'autres apostrophes dans le texte, genre "c'est la fête", il refuse de sauver mon message !

Donc j'ai fait une astuce à 2 balles qui fonctionne :
<?php
$texte = $_POST["texte"];
$texte = stripslashes($texte);
echo("<p>Version originale : ". $texte ."</p>");
$masque = "(c'est cool|c'est super|l'éclate)";
$texte = ereg_replace($masque, "Génial", $texte);
echo("<p>Version corrigée : ". $texte ."</p>");
$texte = nl2br($texte);
echo("<p>Version avec retours de ligne : ". $texte ."</p>");
$texte = addslashes($texte);

$sql  = "INSERT INTO $blogcomments values ('','". $texte ."', '". $nom ."', '". $email ."', '". $url ."', '". $urlimg ."', ". $newdate_jour .", ". $newdate_mois .", ". $newdate_annee .",'". $newdate_heure ."', '". $ip ."', '". $host ."', ". $REF .")";
$requete = mysql_query($sql);
?>

à savoir, mettre un stripslashes avant le ereg, et un addslashes après.. ça fonctionne :)
mais c'est ptet pas super correct
www.zanorg.com
trucs à la con

Mammouth du PHP | 19672 Messages

04 déc. 2005, 18:50

C'est tout à fait valable si.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

kek
Eléphanteau du PHP | 16 Messages

04 déc. 2005, 18:53

bon bin merci :)

j'ai mis résolu
www.zanorg.com
trucs à la con