Problème remplacement de caractère.

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 : Problème remplacement de caractère.

par Arcanis » 12 févr. 2007, 14:55

Eh bien je viens d'apprendre un truc :shock:
Je savais pas du tout que c'était possible, ça.
Merci!

Finalement, j'ai débugué mon script (il fallait mettre $params_recherche['keywords'] et non pas $val dans l'argument de recherche), mais j'ai toujours un problème: bien que le point soit échappé, MySQL le prend toujours en compte comme étant un caractère de regex...
Ma requête:

SELECT `url`,`titre` FROM `sites` WHERE (`titre` REGEXP 'test\.')

Et elle me renvoie:

C'est un test!

Alors qu'il n'y a aucun points. Bizarre.

par Jules Petibidon » 12 févr. 2007, 14:42

hello,

str_replace peut prendre des tableaux pour les remplacements, penses-y, ca t'éviterait d'appeler 70 fois la fonction.

bon courage !

par f4cjv » 12 févr. 2007, 14:11

Merci il me met 2 caractères // à la place d'un / mais ça à l'air de marcher .

Salutations

Echappement des caractères d'une regexp

par Arcanis » 12 févr. 2007, 13:57

[edit: Désolé, je croyais avoir posté un nouveau sujet :cry: ]


Salut!

J'utilise une regexp mysql pour rechercher des mots dans des champs, et j'aurais besoin d'échapper tout les caractères que mysql pourrait utiliser comme attribut d'expression régulière (point, accolades, etc...).

J'ai donc fait ce code:
		foreach($params_recherche['keywords'] as $key => $val) {
			$params_recherche['keywords'][$key] = str_replace(".","\.",$val);
			$params_recherche['keywords'][$key] = str_replace("[","\[",$val);
			$params_recherche['keywords'][$key] = str_replace("]","\]",$val);
			$params_recherche['keywords'][$key] = str_replace("(","\(",$val);
			$params_recherche['keywords'][$key] = str_replace(")","\)",$val);
			$params_recherche['keywords'][$key] = str_replace("{","\{",$val);
			$params_recherche['keywords'][$key] = str_replace("}","\}",$val);
			$params_recherche['keywords'][$key] = str_replace("^","\^",$val);
			$params_recherche['keywords'][$key] = str_replace("$","\$",$val);
		}
Mais malheureusement, il ne marche pas (même quand j'échappe les slashs par d'autres slashs) :cry:

Où est-ce que je me suis trompé?

Merci d'avance!

par Truc » 12 févr. 2007, 13:15

"\" est effectivement un caractère réservé à l'échappement, protéger certains caractères ou symboles (google pour en savoir plus :wink: )

Il faut le doubler pour l'utiliser comme tout autre caractère
str_replace("\\", "/" , $_POST['photo_p']);

par Truc » 12 févr. 2007, 13:11

Modération :
Afin d'obtenir plus de réponses, le sujet est déplacé dans le forum "Débuter en PHP".

Problème remplacement de caractère.

par f4cjv » 12 févr. 2007, 12:58

Bonjour j'ai une chaine et je voudrais remplacer dans celle ci le caractère \ par le caractère /.

J'ai donc le code suivant:

Code : Tout sélectionner

if(isset($_POST['photo_p'])) { $_POST['photo_p']=str_replace("\", "/" , $_POST['photo_p']); }
Ceci ne fonctionne pas à cause du caractère \
Si je fais un essai en remplaçant \ dans le (str_replace) par la lettre "a" par exemple ça fonctionne !!

Cela doit venir du fait que / est un caractère special comment puis je "ruser" pour y arriver ?

Merci salutations