Regex pour un "." dot

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 : Regex pour un "." dot

par Ryle » 24 avr. 2006, 09:48

Si ta chaine se trouve au milieu d'un texte, tu peux utiliser la même chose sans les "^$" :)

L'expression de cyrano fonctionne également, et c'est effectivement plus propre et plus lisible de sortir le masque. Par contre si tu utilises les styles pour mettre en couleur, il y a une ch'tite erreur, c'est un " : " qu'il faut utiliser dans l'attribut à la place du " = "

Code : Tout sélectionner

<span style="color:#1eff00;">

par Cyrano » 24 avr. 2006, 00:45

Tiens, essaye comme ça :
<?php
$v = "Equipé des meilleurs composants. Et à un prix défiant toute concurrence.";
echo("<p>". $v ."</p>");
$masque = "#(Equipé[a-zA-Z ]*\.)#";
$remplacement = "<span style=\"color=#1eff00\">$1</span>";
$v = preg_replace($masque, $remplacement,$v);
echo("<p>". $v ."</p>");
?>
Ça devrait t'afficher ceci :
Equipé des meilleurs composants. Et à un prix défiant toute concurrence.
Equipé des meilleurs composants. Et à un prix défiant toute concurrence.
Est-ce que c'est bien ce que tu veux faire ?

par Mouet » 24 avr. 2006, 00:33

Grand Grand merci pour la rapidié et la qualité!


Le problème est que le Equipé... . se trouve dans un texte ;-) donc je pense que c'est nécessaire 8)

par Ryle » 24 avr. 2006, 00:32

Dans les expression régulière, le . est utilisé pour représenter n'importe quel caractère. Si tu veux dire qu'il s'agit du caractère point, il te faut le protéger d'un antislash : \.

Tu peux également ajouter un "^" au début de ta chaine pour dire que celle ci doit obligatoirement commencer par "Equipé", et ajouter "$" à la fin, pour dire qu'il s'agit du point final et pas du premier point rencontré :
preg_replace("/^Equipé(.+)\.$/","Equipé <font color=#1eff00>$1</font>.",$v);
J'ai également déplacé les balises <font> du résultat, je ne sais pas si c'est ce que tu veux, mais si tu voulais tout mettre en vert, l'expression régulière n'était pas utile ;)

Regex pour un "." dot

par Mouet » 24 avr. 2006, 00:19

Bonsoir,

Je vous fais part d'un petit prolème au quel je suis confronté:

Je voudrais remplacer les "Equipé ... ." Par "Equipé ... ." Mais en vert.

les ... représente une chaine composée de mots et chiffres et cette chaine est terminée par un "."

Pour ce, j'ai commencé avec les regex en faisant :

Code : Tout sélectionner

$v = preg_replace("/Equipé(.+)./","<font color=#1eff00>Equipé\\1 .</font>",$v);
Mais comme je m'en doutais, le "." n'est pas bon et doit surement être déffinit d'une autre facon que je ne connais pas =/

D'avance, merci

Mouet