preg_match et regles de remplacement

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 : preg_match et regles de remplacement

Re: preg_match et regles de remplacement

par niuxe » 08 févr. 2013, 01:12

Salut,
<<<EDIT
Mise à jour du pattern.
Il faudra peut être que tu revoies les quantifieurs. C'est peut être là que ça pêchera pour des mails aux noms de domaines très longs.
EDIT;
<?php
    $motif = '#.*(((?:(?:(?:[a-zA-Z0-9][\.\-\_]?)*)[a-zA-Z0-9])+)\@((?:(?:(?:[a-zA-Z0-9][\.\-\_]?){0,62})[a-zA-Z0-9])+)\.([a-zA-Z0-9]{2,6})).*#U';
    
    $str = 'Delivery to the following recipient failed permanently:

     [email protected]

Technical details of permanent failure:
Message rejected by Google Groups. Please visit http://mail.goog';

preg_match($motif,$str,$match);
echo '<pre>';
print_r($match);
echo '</pre>';

preg_match et regles de remplacement

par raquier » 07 févr. 2013, 11:54

Bonjour,

J'utilise ce code pour récupérer les adresses e-mails (dans les mails des retours automatique) et les mettre dans une liste noir le problème est que la chaine de sortie n'est pas celle qui devrait être.

Le code que j'utilise est le suivant:
elseif (preg_match ("/Delivery to the following recipient failed permanently:\r\n\r\n?.*(\S+@\S+\w)\r\n\r\n?.*Technical details of permanent failure: \r\nMessage rejected by Google Groups./i",$body,$match)) {
    $result['rule_cat']    = 'antispam';
    $result['rule_no']     = '0100';
    $result['email']       = $match[1];
  }</code>
Le code input (tronque) :

Code : Tout sélectionner

Delivery to the following recipient failed permanently: [email protected] Technical details of permanent failure: Message rejected by Google Groups. Please visit http://mail.goog....
Et en sortie :
Seul le dernier caractère a cote du arobase est pris en compte.
Je suppose que seul un caractère me manque dans ce code.

Comme je ne suis pas une barique en PHP peut être vois-tu la petite erreur qui c'est glisse dans mon code (toi qui lit ses lignes en ce moment).
Si qqun a la réponse je vous en serait reconnaissant.

Merci a tous.
Lorenz #-o
<config>Windows 7 / Firefox 18.0</config>