[Фильтр в Битриксе] Помогите в кодом на php

Discussion in 'PHP' started by StalkerKill, 6 Sep 2012.

  1. StalkerKill

    StalkerKill Elder - Старейшина

    Joined:
    27 Oct 2007
    Messages:
    0
    Likes Received:
    8
    Reputations:
    -1
    Уважаемые коллеги!

    Подскажите пожалуйста как изменить код:
    PHP:
    if (!CModule::IncludeModule("subscribe"))
            return;

    if (
    preg_match("#for[^<]+<([^>]+)>#"$arMessageFields['BODY'],$regs))
    {
            
    $email $regs[1]; // адрес, который надо исключить из рассылки
            
    $rs=CSubscription::GetByEmail($email);
            
    $f $rs->Fetch();
            
    CSubscription::Delete($f['ID']); // удаляем адрес из рассылки

            
    return true;
    }
    else
            return 
    false;
    так что бы в preg_match можно было найти все адреса почты, которые находятся в <> или ' ' , не зависимо от впереди стоящего текста!

    Уже всю голову сломал с этим кодом...

    Сканнер работает так: http://dev.1c-bitrix.ru/community/blogs/howto/375.php
     
  2. barnaki

    barnaki Elder - Старейшина

    Joined:
    2 Nov 2008
    Messages:
    676
    Likes Received:
    130
    Reputations:
    4
    как то так наверное
    PHP:
    $email "/[\<\"]{1,}([a-z0-9_-]+\.)*[a-z0-9_-]+@[a-z0-9_-]+(\.[a-z0-9_-]+){1,}[\>\"]{1,}/i";
    preg_match_all($email,$arMessageFields['BODY'],$emails);
    мылы будут в $emails
     
    1 person likes this.
  3. StalkerKill

    StalkerKill Elder - Старейшина

    Joined:
    27 Oct 2007
    Messages:
    0
    Likes Received:
    8
    Reputations:
    -1
    А не могли бы вы более конкретно написать вместе с моим примером? как в нем это все вставить?
     
  4. barnaki

    barnaki Elder - Старейшина

    Joined:
    2 Nov 2008
    Messages:
    676
    Likes Received:
    130
    Reputations:
    4
    Code:
     if (!CModule::IncludeModule("subscribe")) 
            return; 
     $email = "/[\<\"]{1,}([a-z0-9_-]+\.)*[a-z0-9_-]+@[a-z0-9_-]+(\.[a-z0-9_-]+){1,}[\>\"]{1,}/i";
    
    if (preg_match_all($email, $arMessageFields['BODY'],$regs)) 
    { 
            //выводим мылы
            var_dump($regs)
           // дальше твой функционал
            $email = $regs[1]; // адрес, который надо исключить из рассылки 
            $rs=CSubscription::GetByEmail($email); 
            $f = $rs->Fetch(); 
            CSubscription::Delete($f['ID']); // удаляем адрес из рассылки 
    
            return true; 
    } 
    else 
            return false;  
    ты просил < заменить на ковычки . сделай так
    PHP:
    $email "/[.\"]{1,}([a-z0-9_-]+\.)*[a-z0-9_-]+@[a-z0-9_-]+(\.[a-z0-9_-]+){1,}[.\"]{1,}/i";
    это будет выбирать отовсюду. ( любые символы а не только кавычки или . а вообще фигли парится . сделай просто
    PHP:
    $email "/([a-z0-9_-]+@[a-z0-9_-]+\.[a-z0-9_-])+{1,}/i";
    это тебе вообще все мылы со страницы достанет
     
    #4 barnaki, 14 Sep 2012
    Last edited: 14 Sep 2012