ereg_replace et apostrophe

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : ereg_replace et apostrophe

par kek » 04 déc. 2005, 18:53

bon bin merci :)

j'ai mis résolu

par Cyrano » 04 déc. 2005, 18:50

C'est tout à fait valable si.

par kek » 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

par Cyrano » 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);
?>

par kek » 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);

par Cyrano » 04 déc. 2005, 18:18

Sans voir le code, je suis incapable de te répondre.

par kek » 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 ?

par Cyrano » 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

par kek » 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..

par Cyrano » 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.

ereg_replace et apostrophe

par kek » 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