Précédent   Forum des professionnels en informatique > PHP > Scripts
Scripts Forum d'entraide sur les scripts PHP téléchargés. Les meilleurs scripts PHP, la FAQ scripts PHP, toutes les FAQ PHP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/01/2011, 14h57   #1
Invité de passage
 
mathieu seegers
Inscription : septembre 2010
Messages : 11
Détails du profil
Informations personnelles :
Nom : mathieu seegers

Informations forums :
Inscription : septembre 2010
Messages : 11
Points : 4
Points : 4
Par défaut Probleme avec preg_replace et apostrophes

Bonjour à tous

En tant que débutant du php je suis confronté a un probleme d'apostrophe avec la fonction: preg_replace()

Voila:
Il ya une table: texte qui contient des textes
et une table: liens qui contient des mots qui doivent servir a faire des liens

Lorsque j'essais de transformer un mot le table lien en URL avec ce code ça marche bien:
Code :
1
2
3
4
5
6
 
$letexte = $lignetexte['letexte'];
$textedulien = $ligneliens['textedulien'];
$remplacement = " <a href=\"$ligneliens[adresse]\" target=\"_$ligneliens[fenetre]\">$textedulien</a> ";
$nouveautexte = preg_replace('#\b' . $textedulien. '\b#i', $remplacement, $letexte);
$requete = "UPDATE $tablecontenu SET contenu='$nouveautexte' WHERE(num='$_GET(num]')";
Pour eviter les problemes d'apostrophes dans le texte je fais plutôt comme ça et ça marche:
Code :
1
2
3
4
5
6
 
$letexte = htmlentities($lignetexte['letexte'], ENT_QUOTES);
$textedulien = $ligneliens['textedulien'];
$remplacement = " <a href=\"$ligneliens[adresse]\" target=\"_$ligneliens[fenetre]\">$textedulien</a> ";
$nouveautexte = preg_replace('#\b' . $textedulien. '\b#i', $remplacement, $letexte);
$requete = "UPDATE $tablecontenu SET contenu='$nouveautexte' WHERE(num='$_GET(num]')";
MAIS s'il y a un apostrophe dans le mot ou les mots qui doivent servir de lien ça ne marche plus :-(
Code :
1
2
3
4
5
6
 
$letexte = htmlentities($lignetexte['letexte'], ENT_QUOTES);
$textedulien = htmlentities($ligneliens['textedulien'], ENT_QUOTES);
$remplacement = " <a href=\"$ligneliens[adresse]\" target=\"_$ligneliens[fenetre]\">$textedulien</a> ";
$nouveautexte = preg_replace('#\b' . $textedulien. '\b#i', $remplacement, $letexte);
$requete = "UPDATE $tablecontenu SET contenu='$nouveautexte' WHERE(num='$_GET(num]')";
Il n'y a pas de message d'erreur, le lien n'est pas fait et en plus ça insere du vide a la place du texte dans la table: contenu!

Merci me de dire ou est l'erreur, j'apprends le php sur le tas et suis loin de tout savoir :-)

Mathieu
lecroquant est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2011, 20h29   #2
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Si tu utilises mysql_query, il faut utiliser mysql_real_escape_string pour echapper tes chaines :

Code :
1
2
3
$requete = "UPDATE ". $tablecontenu ."
SET contenu='" . mysql_real_escape_string($nouveautexte) . "'
WHERE num=" . intval($_GET(num]);
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2011, 14h20   #3
Invité de passage
 
mathieu seegers
Inscription : septembre 2010
Messages : 11
Détails du profil
Informations personnelles :
Nom : mathieu seegers

Informations forums :
Inscription : septembre 2010
Messages : 11
Points : 4
Points : 4
Par défaut Merci résolu

Super merci :-)

ça fonctionne bien

Bonne journée

Mathieu
lecroquant est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h12.


 
 
 
 
Partenaires

Hébergement Web