J'ai trop de difficultés à échapper cette chaine !

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 : J'ai trop de difficultés à échapper cette chaine !

par Cyrano » 30 mai 2007, 19:35

Modération :
Brian, si ta question est résolue, pense à ajouter le tag [Résolu]
pour indiquer aux personnes qui voudront consulter ce sujet qu'il contient une solution.
Tu peux réaliser cette opération en cliquant sur le bouton Image en haut à gauche de ce sujet.

par Brian » 30 mai 2007, 18:14

merci beaucoup pour ce rappel plus que nécessaire!
-> Sujet réglé !

par Ryle » 30 mai 2007, 13:56

Bon alors un rapide petit cours d'échappement :

Dans une chaine délimitée par des apostrohpes, on peut utiliser des guillemets sans avoir besoin de les échapper. De même si la chaine est délimitée par des guillemets on peut utiliser des apostrophes sans soucis.
echo '<img src="...." alt="...." />';
echo "<img src='....' alt='....' />";
Le problème apparait donc uniquement lorsque des guillemets contiennent d'autres guillemets, ou que des apostrophes encadrent d'autres apostrophes. En effet, dans ce cas, le langage va considérer que la chaine se termine à ce caractère.

Selon le langage dans lequel on travail, la façon d'échapper un caractère dans une chaine peut varier (doubler l'apostrophe en sql, passer en entités html pour du html, etc.). En PHP on échappe un caractère en le faisant précéder d'un antislash :
echo "<img src=\"....\" alt=\"....\" />";
Ainsi, tu peux virer tous les antislash inutiles de ton expression :)
$chaine = str_replace(
  '<img border="0"', 
  '<img class="image" alt="Voir détail de l\'annonce" width="41" height="60"',
  $chaine
);

par orgerix » 30 mai 2007, 13:48

Premièrement, tu n'as pas besoin d'échapper les guillements (") mais seulement les apostrophes.

Ensuite, regarde bien dans ton code (HTML) si tu n'as pa fais d'erreur, comme deux espace, un attrubut entre, etc...

par Brian » 30 mai 2007, 13:30

Donc voilà le code que j'ai uploadé :
$chaine=str_replace('<img border=\"0\"', '<img class=\"image\" alt=\"Voir détail de l\'annonce\" width=\"41\" height=\"60\"',$chaine);
Le problème, c'est que ca ne me remplace rien, rien ne se passe...

Merci.

par Brian » 30 mai 2007, 00:00

Merci beaucoup pour ces infos, j'essaye ca demain et je vous dit, car là il es un peu trop tard !

@+

par Jules Petibidon » 29 mai 2007, 21:51

hello,

l'antislashe est ton ami...

et accessoirement, si tu sais vraiment pas de débrouiller avec, la syntaxe heredoc te permettra de passer outre ces problemes...

enfin pour terminer, un simple str_replace au lieu du ereg_replace suffit largement.

par Arcanis » 29 mai 2007, 21:51

Je dis surement une boulette, mais l'échappement PHP ne se fait-t-il pas uniquement avec un slash (ou anti-slash, ze sais plus comment ça s'appelle, ça: \)?
Parce que tu l'a échappé avec une autre apostrophe (comme dans MySQL).

par Cyrano » 29 mai 2007, 20:23

J'imagine que ton code html ne comporte aucune balise d'image incomplète comme celle que tu montres. Tu as donc besoin de modifier des balises complètes auxquelles tu veux modifier/ajouter des attributs.

D'autre part, le message d'erreur indique un numéro de ligne dans ton code : avoir cette ligne avec quelques lignes avant aiderait pas mal à la compréhension du message d'erreur.

Et si un autre attribut précède ton attribut border : ton expression ne modifiera pas cette balise... Donc, ta question est incomplète.

Parce que selon le code de départ, ça devrait fonctionner, mais si ce n'est pas le cas, il nous manque des éléments pour te répondre intelligemment. Saisis-tu mieux ?

par Brian » 29 mai 2007, 20:12

Bon, pour faire simple :

Je veux remplacer
<img border="0"
qui est dans $chaine
par
<img class="image" alt="Voir détail de l''annonce" width="41" height="60"
Je ne vois pas comment être plus clair !

par Cyrano » 29 mai 2007, 20:09

Ha.... ça m'avance drôlement ça... j'ai beau nettoyer mes lunettes, je ne vois toujours pas les informations demandées, pour te donner une réponse appropriée, c'est particulièrement compliqué :mrgreen:

par Brian » 29 mai 2007, 19:59

Voila le code de l'erreur :

Parse error: syntax error, unexpected T_CLASS in ******************/parser.php4 on line 107

Merci à vous.

par Cyrano » 29 mai 2007, 19:55

....TU obtiens quoi ... alors que tu voudrais obtenir quoi ?
Tu pourrais illustrer ton propos avec un exemple s'il te plait, ma boule de cristal est cassée :?

par Brian » 29 mai 2007, 19:53

Le problème vient des apostrophes et des des guillemets qui ne sont pas considérés comme faisant parti de la chaîne, mais comme des délimiteurs...

Merci pour votre aide.

par Cyrano » 29 mai 2007, 19:13

Et si tu nous disais la nature du problème ?? TU obtiens quoi ... alors que tu voudrais obtenir quoi ?