begin process at 2012 05 31 05:06:29
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Débutant(e)

 > 

pb d'expression régulière


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

pb d'expression régulière

mardi 18 mars 2008 à 16:31:53 | pb d'expression régulière

ludovicanceaux

Membre Club


Salut à tous,

j'ai créé une boite mail sur mon serveur pour que les membres puissent dialoguer entre eux, poser des questions etc...., (tout ca, mais ss s'échanger ni leur numéro de téléphone, ni leur adresse mail, ni des insultes etc...) il faut que ca reste ds la charte du site, seulement j'ai un problème je comprend que dalle aux expressions régulières (j'ai regardé des tuto, mais c'est compliqué, les "&" et aussi "$" etc..., j'ai déjà fait ca:

$message='<html><head></head><body>';
$message.='Un membre a posté un message à votre attention sur <a href="http://www.galarea.com">http://www.galarea.com</a>, vous pouvez aller le voir dès maintenant</body></html>';


if(ereg("([0-9])",$message)){
    echo 'true';
}else{
    echo 'false';
}

donc là ca marche pour les chiffres, mais sitot que je passe à des mots ou des lettre style "@", je n'y arrive plus!!!!

Merci d'avance
mardi 18 mars 2008 à 16:41:06 | Re : pb d'expression régulière

ludovicanceaux

Membre Club
je viens de trouver un truc.

if(eregi("([0-9]|@|www|message)",$message)){
    echo 'true';
}else{
    echo 'false';
}

est ce que ce système là est assez fiable???
mardi 18 mars 2008 à 18:04:34 | Re : pb d'expression régulière

neigedhiver

Salut,

Qu'est-ce que tu souhaites faire exactement ?
Parce qu'avec les PCRE (à utiliser plutôt que les regex posix ereg, eregi, etc) tu peux faire à peu près n'importe quoi...

Les Expressions Régulières, au début, j'avais aussi beaucoup de mal... Mais à force de persévérance, j'ai commencé à faire des trucs... Pis maintenant j'adore ça (j'en mettrais pas partout pour autant quand même).
Donc essaie de mieux expliquer ton problème, ce que tu veux faire précisément, et on verra la solution à mettre en oeuvre...


Neige
mardi 18 mars 2008 à 18:25:00 | Re : pb d'expression régulière

ludovicanceaux

Membre Club
lol, bah en fait les membres peuvent dialoguer entre eux sur le site, via une boite mail stocké en sql que j'ai faite (un peu comme ebay), mais ce que je voudrais c'est garder le control des messages et quand il detecte des mots clefs (ex: @, un numéro de téléphone, message, adresse, etc...)  il m'enregistre dans ma bdd à la colonne activate : false au lieu de true, ca veux dire qu'il désactive le message, tant que je l'ai pas lu et réactivé moi même...
En fait c'est un site de vente d'objet d'art, et il ne faudrait pas que les membres finalisent leur transactions en dehors du site.

merci
mardi 18 mars 2008 à 18:25:20 | Re : pb d'expression régulière

ludovicanceaux

Membre Club
c'est vrai que c'est un peu compliqué
mardi 18 mars 2008 à 18:41:44 | Re : pb d'expression régulière

neigedhiver

C'est vrai que c'est pas le plus simple... Pour m'être penché à une époque sur cette question (exactement la même) j'en étais personnellement arrivé à la conclusion que le système ebay est le plus facile à mettre en place : les membres paient dès la mise en vente d'un objet, quel que soit le résultat de la vente (c'est entre autres ce qui a lancé la mode des enchères à 1€).
Le fait aussi que les messages soient publics incite les gens à ne pas y laisser trainer leurs coordonnées personnelles.

Bref. Pour revenir à ton problème...

ereg est moins performant que preg_match. C'est un fait testé, avéré et éprouvé, et même énoncé dans la doc de php.

Concernant le motif à utiliser... Celui que tu as n'est pas mauvais. Simplement, trop de tests OU (motif1|motif2|motif3) va tuer les performances. Donc en mettre un peu oui, mais pas uniquement de ça (genre pas pour 15 ou 20 motifs à trouver).

Avec preg_match, ton motif donnerait ça :

if (preg_match('`([0-9]|@|www|message)`i', $message)) {
    echo 'true';
}
else {
    echo 'false';
}


J'y pense : ton système ne sera pas infaillible... Il suffit d'écrire une adresse email comme ça : nom point prenom at domaine point tld pour que tu ne puisse pas la détecter... Et si tu commences à t'amuser à chercher les noms de domaines dans le texte (gmail.com, hotmail.fr, neuf.fr, free.fr, etc) tu vas anéantir ton serveur.
Si tu cherches les chiffres, tu vas te taper tous les messages où transitent des cotes, des dimensions, des départements, ...

Quitte à filtrer les messages, tu ferais mieux de tous les valider à la main... Ouais, ça fait beaucoup... Ou alors, tu forces à ce qu'ils soient publics. Je sais, c'est pas la solution à ta question, mais j'essaie aussi de rationnaliser ton affaire ;)


Neige
mardi 18 mars 2008 à 21:38:33 | Re : pb d'expression régulière

ludovicanceaux

Membre Club
mais je pense que tu as raison, ca va tuer les performances si je vérifie 20 messages par 20 messages, mais si je vérifie 1 message par 1 message, au moment de l'envoie par exemple, ca ne doit pas utiliser trop de ressources??? en fait je créer une bdd avec 5 colonnes "id / from / to/ lu / activation" et en fait je fais la vérification au moment ou le membre envoie le message, et dc ca enregistre false ou true ds la colonne activation, en fait je sais que ce n'est pas infailllible, mais ca me permet de faire une préselection, après rien ne m'empèche par la suite de regarder d'autre message comme code source doit dailleurs le faire, au moment ou il désactive des sources, ou des questions dans le forum, enfin j'ai besoin de ton avis!!!!
mardi 18 mars 2008 à 23:49:32 | Re : pb d'expression régulière

neigedhiver

Je parlais pas de 20 messages par 20 messages, mais de 20 tests de type OU exclusif dans ton expression régulière, qui correspondent au masque (mot1|mot2) ou le pipe | sert de sélecteur.

Si tu fais ça pour quelques mots, comme ceux que tu as énoncés, a priori, ça me choque pas : la vérif se fera uniquement quand un membre enverra un message à un autre, pas à chaque chargement de page. Donc de ce côté là, c'est pas la mort. Mais si tu rajoutes des mots à filtrer, que t'en as 20, parce qu'avec le temps tu te rends compte qu'il y a plus d'expressions auxquelles faire attention (mail, tél, téléphone, appelle-moi, numero, adresse, ecris-moi, call, at, point com, point fr, etc) là, ça va commencer à être méchant.

Ma conclusion, c'est que soit t'as un système de filtre imparfait que tu ne pourras améliorer que dans une certaine limite et au détriment des performances, soit tu modères a priori (tous les messages doivent être validés), soit tu changes de système...
Le filtre, c'est super tentant, je le reconnais... Seulement, si tu veux avoir un truc super mortel dugne d'un moteur de recherche comme google, il te faudra investir dans plusieurs centaines de machines 10 fois plus performantes que ton super pc tuning overclocké pour les jeux, et il te faudra utiliser non pas un langage comme PHP, mais plutôt du C, plus proche de la machine.
Sincèrement, à ta place, j'oublierais le système de filtre... Sauf si tu te fais une raison et que tu sais que tous les messages ne peuvent être filtrés. Donc comme préselection, moui... Mais je ne doute pas une seconde du niveau de vice des internautes qui cherchent à grapiller 20 centimes d'euros par ci, 10 centimes par là... Autant tout modérer a priori.

Après, tu peux te baser sur cette contrainte pour rajouter des services payants : un membre fidèle, bien noté, qui a plusieurs transactions derrière lui, pourrait souscrire un abonnement lui permettant d'échapper à la modération à priori ; ses messages ne seraient pas filtrés (mais pourraient encore être contrôlés).

Tout ça, c'est que mon avis à moi... Je le trouve pertinent, forcément... C'est subjctif. D'autres pourraient certainement y trouver à redire, y'a peut-être même des trucs dont j'ai pas conscience qui peuvent faire exactement ce que tu veux 50000 fois en 0,1 ms.

Peux pas te dire mieux.


Neige
mercredi 19 mars 2008 à 10:51:10 | Re : pb d'expression régulière

ludovicanceaux

Membre Club
ok, je te remercie de tes explications, je vais peut etre faire comme tu m'as dis, de placer des notes pour les transaction, et je vis filtrer que ceux qui ont une petite note, enfin je vais en parler à mon boss ;-), sinon à part ca j'aimerais bien apprendre tous sur les expressiions régulières, ca me parait interressant, mais un peu compliqué, alors connais tu des bon tuto, évite de me dire manuelphp ou les autres du même style, car je n'ai pas trouvé mon bonheur, même le site du zéro je l'ai lu mais il ne rentre pas ds les détails, merci
mercredi 19 mars 2008 à 10:56:21 | Re : pb d'expression régulière

neigedhiver

Héhé... Ouais, j'ai un chouette tuto dans mes favoris... Même qu'y a un testeur de Regex (PCRE ou Posix) :

Regex - Expressions régulières PCRE


Neige

1 2

Cette discussion est classée dans : message, mail, pb, expression, régulière


Répondre à ce message

Sujets en rapport avec ce message

expression régulière regex [ par fyav ] j'ai une variable ex: $mavar="coucoule monde%topsalut cherie%%topcomment ça va";et je souhaites enlever tout ce qui est entre "%top" et "%%top"sachant Probléme avec script mail chez Free [ par SteufDu59 ] J'ai donc un formulaire avec la possibilité de joindre une image, donc en fichier joint, le script niveau formulaire est :if ($fonctionmail=="oui"){// PB Expression reguliére [ par krevette ] Salut tout le mondeJe commence a réalisé des expression réguliére pour la conception d'un forum. (enfin pour le moment je n'ais fais que tester en ut mailer une page php [ par micholi ] Bonjour,j'utilise la fonction mail dans une page php pour envoyer un mail.  Voici mon script : $to = "email du destinataire" . ", " ;$subject = "Sujet Pb Fonction Mail... [ par Osmose34 ] Bonjour à tousJ'ai un ptit problème avec ma fonction Mail, j'ai écris la fonction avec tous les paramètres simples, j'upload la page, je lance la page mail() et function() [ par arnold002 ] Bonjour à tous,Je voudrai envoyer un mail (avec la fonction mail() ).Dans le message du mail (stocké dans une variable $message), je veux faire appel Envoi d' un mail avec des $variable dans le message [ par blibers ] Slt a tous ;)voila mon pb :je ne trouve pas de solutions pour pouvoir envoyer un message mail avec des variables dans le corp du message !je vous mets Voila j'ai fais un bouh de code pour envoyer des mail [ par timolerigolo ] Bonjour,Voila j'ai fais un bouh de code PHP pour envoyer des Mail mé je ne sé pas si le code et bon et comme je ne resoie pas de mail je ne sé pas.... Problème de code dans un formulaire [ par gateau ] Bonjour,Je suis on ne peut plus novice en PHP, grâce à des tutoriaux j'ai pu créer un formulaire dans une int mail() => PB [ par funghi ] Salut à tous !!!mon site se compose uniquemennt d'une anim flash et lorsque j'appelle la fonction mail(), une nouvelle fenetre s'ouvre ... Je peux la


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,671 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales