Расставить точки в гмейлах

Тема в разделе "PHP", создана пользователем phillip, 21 авг 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. phillip

    phillip

    Регистр.:
    4 сен 2007
    Сообщения:
    413
    Симпатии:
    15
    Хочу написать функцию, которая будет расставлять точки. Надо как-то рекурсивно обходить чтоли хз.
    На входе-
    mymail@gmail.com
    На выходе
    m.ymail@gmail.com
    m.y.mail@gmail.com
    m.y.m.ail@gmail.com
    m.y.m.a.il@gmail.com
    m.y.m.a.i.l@gmail.com
    m.y.mail@gmail.com
    m.y.m.ail@gmail.com
    m.y.m.a.i.l@gmail.com
    Ну и так далее. Использовать все варианты расстановки точек внутри слова. Подскажите как правильно такой цикл сделать
     
  2. KARAT

    KARAT

    Регистр.:
    15 мар 2007
    Сообщения:
    508
    Симпатии:
    873
    утилита есть от zennoposter - именно это производит
    если конечно не из чисто спортивного интереса желание написанать функцию
     

    Вложения:

  3. phillip

    phillip

    Регистр.:
    4 сен 2007
    Сообщения:
    413
    Симпатии:
    15
    в утилиту от зеннопостера надо вводить по одному мылу. не гут
     
  4. Arqin

    Arqin

    Регистр.:
    17 мар 2009
    Сообщения:
    185
    Симпатии:
    37
    Зачем рекурсия? о.О Можно 2мя вложенными циклами к примеру сделать.
    1ый по всем мылам, 2ой по всему слову.... Или код нуна?
     
  5. tostrss

    tostrss

    Регистр.:
    16 окт 2007
    Сообщения:
    771
    Симпатии:
    217
    PHP:
    <?php

    $array 
    = array();

    $array[] = 'odoinodin@gmail.com';
    $array[] = 'lopuh@gmail.com';
    $array[] = 'mymail@gmail.com';


    foreach (
    $array as $email) {
        
    $emails generateDot($email);
        
    print_r($emails);
    }

    function 
    generateDot($email) {
        
    $emails = array();
        
    $i 1;
        while (
    $email[$i] != '@') {
            
    $email substr($email0$i).'.'.substr($email$i);
            
    $emails[] = $email;
            
    $i+=2;
        }
        return 
    $emails;
    }
    ?>

    Выдает
    Код:
    Array
    (
        [0] => o.doinodin@gmail.com
        [1] => o.d.oinodin@gmail.com
        [2] => o.d.o.inodin@gmail.com
        [3] => o.d.o.i.nodin@gmail.com
        [4] => o.d.o.i.n.odin@gmail.com
        [5] => o.d.o.i.n.o.din@gmail.com
        [6] => o.d.o.i.n.o.d.in@gmail.com
        [7] => o.d.o.i.n.o.d.i.n@gmail.com
    )
    Array
    (
        [0] => l.opuh@gmail.com
        [1] => l.o.puh@gmail.com
        [2] => l.o.p.uh@gmail.com
        [3] => l.o.p.u.h@gmail.com
    )
    Array
    (
        [0] => m.ymail@gmail.com
        [1] => m.y.mail@gmail.com
        [2] => m.y.m.ail@gmail.com
        [3] => m.y.m.a.il@gmail.com
        [4] => m.y.m.a.i.l@gmail.com
    )
    

    Так ты хотел?
     
  6. Arqin

    Arqin

    Регистр.:
    17 мар 2009
    Сообщения:
    185
    Симпатии:
    37
    Именно о таком способе я и писал) Правда без функции ^_^
     
  7. phillip

    phillip

    Регистр.:
    4 сен 2007
    Сообщения:
    413
    Симпатии:
    15
    как?
    Ну примерно. Только допустим

    [0] => l.opuh@gmail.com
    [1] => l.o.puh@gmail.com
    [2] => l.o.p.uh@gmail.com
    [3] => l.o.p.u.h@gmail.com

    к этому еще можно добавить кучу вариантов, как расставить точки
    Код:
    l.o.puh@gmail.com
    l.o.pu.h@gmail.com
    lo.puh@gmail.com
    lo.pu.h@gmail.com
    lop.uh@gmail.com
    l.o.p.u.h@gmail.com
    l.op.u.h@gmail.com
    
    И тд.
     
  8. tostrss

    tostrss

    Регистр.:
    16 окт 2007
    Сообщения:
    771
    Симпатии:
    217
    Как ты показал в первом посте, так и сделал. Сам сиди и расчитывай вариатность, как расчитаешь, отпиши, я тебе сделаю функцию.
     
  9. PapaJoe

    PapaJoe

    Регистр.:
    4 авг 2008
    Сообщения:
    620
    Симпатии:
    312
    PHP:
    <?php

    $array 
    = array(); 

    $array[] = 'odoinodin@gmail.com'
    $array[] = 'lopuh@gmail.com'
    $array[] = 'mymail@gmail.com'


    foreach (
    $array as $email) { 
        
    $emails generateDot($email); 
        
    print_r($emails);


    function 
    generateDot($email) { 
        
    $emails = array(); 
        list(
    $name,$serv)=explode("@",$email);
        
    $sdvig=strlen($name)-1;
        
    $dec= ((1<<$sdvig)-1);
        for(
    $q=1;$q<=$dec;$q++){
            
    $names=$name;
            
    $bin=sprintf("%".$sdvig."d",decbin($q));
            
    $lenbin=$sdvig-1;
            for(
    $w=$lenbin;$w>=0;$w--){
                if(
    $bin[$w]==1)
                    
    $names=substr($names0$w+1).'.'.substr($names$w+1);
            }
            
    $emails[]=$names."@".$serv;
        }
        return 
    $emails

    ?>
    выводит:
    Код:
    Array
    (
        [0] => odoinodi.n@gmail.com
        [1] => odoinod.in@gmail.com
        [2] => odoinod.i.n@gmail.com
        [3] => odoino.din@gmail.com
        [4] => odoino.di.n@gmail.com
        [5] => odoino.d.in@gmail.com
        [6] => odoino.d.i.n@gmail.com
        [7] => odoin.odin@gmail.com
        [8] => odoin.odi.n@gmail.com
        [9] => odoin.od.in@gmail.com
        [10] => odoin.od.i.n@gmail.com
        [11] => odoin.o.din@gmail.com
        [12] => odoin.o.di.n@gmail.com
        [13] => odoin.o.d.in@gmail.com
        [14] => odoin.o.d.i.n@gmail.com
        [15] => odoi.nodin@gmail.com
        [16] => odoi.nodi.n@gmail.com
        [17] => odoi.nod.in@gmail.com
        [18] => odoi.nod.i.n@gmail.com
        [19] => odoi.no.din@gmail.com
        [20] => odoi.no.di.n@gmail.com
        [21] => odoi.no.d.in@gmail.com
        [22] => odoi.no.d.i.n@gmail.com
        [23] => odoi.n.odin@gmail.com
        [24] => odoi.n.odi.n@gmail.com
        [25] => odoi.n.od.in@gmail.com
        [26] => odoi.n.od.i.n@gmail.com
        [27] => odoi.n.o.din@gmail.com
        [28] => odoi.n.o.di.n@gmail.com
        [29] => odoi.n.o.d.in@gmail.com
        [30] => odoi.n.o.d.i.n@gmail.com
        [31] => odo.inodin@gmail.com
        [32] => odo.inodi.n@gmail.com
        [33] => odo.inod.in@gmail.com
        [34] => odo.inod.i.n@gmail.com
        [35] => odo.ino.din@gmail.com
        [36] => odo.ino.di.n@gmail.com
        [37] => odo.ino.d.in@gmail.com
        [38] => odo.ino.d.i.n@gmail.com
        [39] => odo.in.odin@gmail.com
        [40] => odo.in.odi.n@gmail.com
        [41] => odo.in.od.in@gmail.com
        [42] => odo.in.od.i.n@gmail.com
        [43] => odo.in.o.din@gmail.com
        [44] => odo.in.o.di.n@gmail.com
        [45] => odo.in.o.d.in@gmail.com
        [46] => odo.in.o.d.i.n@gmail.com
        [47] => odo.i.nodin@gmail.com
        [48] => odo.i.nodi.n@gmail.com
        [49] => odo.i.nod.in@gmail.com
        [50] => odo.i.nod.i.n@gmail.com
        [51] => odo.i.no.din@gmail.com
        [52] => odo.i.no.di.n@gmail.com
        [53] => odo.i.no.d.in@gmail.com
        [54] => odo.i.no.d.i.n@gmail.com
        [55] => odo.i.n.odin@gmail.com
        [56] => odo.i.n.odi.n@gmail.com
        [57] => odo.i.n.od.in@gmail.com
        [58] => odo.i.n.od.i.n@gmail.com
        [59] => odo.i.n.o.din@gmail.com
        [60] => odo.i.n.o.di.n@gmail.com
        [61] => odo.i.n.o.d.in@gmail.com
        [62] => odo.i.n.o.d.i.n@gmail.com
        [63] => od.oinodin@gmail.com
        [64] => od.oinodi.n@gmail.com
        [65] => od.oinod.in@gmail.com
        [66] => od.oinod.i.n@gmail.com
        [67] => od.oino.din@gmail.com
        [68] => od.oino.di.n@gmail.com
        [69] => od.oino.d.in@gmail.com
        [70] => od.oino.d.i.n@gmail.com
        [71] => od.oin.odin@gmail.com
        [72] => od.oin.odi.n@gmail.com
        [73] => od.oin.od.in@gmail.com
        [74] => od.oin.od.i.n@gmail.com
        [75] => od.oin.o.din@gmail.com
        [76] => od.oin.o.di.n@gmail.com
        [77] => od.oin.o.d.in@gmail.com
        [78] => od.oin.o.d.i.n@gmail.com
        [79] => od.oi.nodin@gmail.com
        [80] => od.oi.nodi.n@gmail.com
        [81] => od.oi.nod.in@gmail.com
        [82] => od.oi.nod.i.n@gmail.com
        [83] => od.oi.no.din@gmail.com
        [84] => od.oi.no.di.n@gmail.com
        [85] => od.oi.no.d.in@gmail.com
        [86] => od.oi.no.d.i.n@gmail.com
        [87] => od.oi.n.odin@gmail.com
        [88] => od.oi.n.odi.n@gmail.com
        [89] => od.oi.n.od.in@gmail.com
        [90] => od.oi.n.od.i.n@gmail.com
        [91] => od.oi.n.o.din@gmail.com
        [92] => od.oi.n.o.di.n@gmail.com
        [93] => od.oi.n.o.d.in@gmail.com
        [94] => od.oi.n.o.d.i.n@gmail.com
        [95] => od.o.inodin@gmail.com
        [96] => od.o.inodi.n@gmail.com
        [97] => od.o.inod.in@gmail.com
        [98] => od.o.inod.i.n@gmail.com
        [99] => od.o.ino.din@gmail.com
        [100] => od.o.ino.di.n@gmail.com
        [101] => od.o.ino.d.in@gmail.com
        [102] => od.o.ino.d.i.n@gmail.com
        [103] => od.o.in.odin@gmail.com
        [104] => od.o.in.odi.n@gmail.com
        [105] => od.o.in.od.in@gmail.com
        [106] => od.o.in.od.i.n@gmail.com
        [107] => od.o.in.o.din@gmail.com
        [108] => od.o.in.o.di.n@gmail.com
        [109] => od.o.in.o.d.in@gmail.com
        [110] => od.o.in.o.d.i.n@gmail.com
        [111] => od.o.i.nodin@gmail.com
        [112] => od.o.i.nodi.n@gmail.com
        [113] => od.o.i.nod.in@gmail.com
        [114] => od.o.i.nod.i.n@gmail.com
        [115] => od.o.i.no.din@gmail.com
        [116] => od.o.i.no.di.n@gmail.com
        [117] => od.o.i.no.d.in@gmail.com
        [118] => od.o.i.no.d.i.n@gmail.com
        [119] => od.o.i.n.odin@gmail.com
        [120] => od.o.i.n.odi.n@gmail.com
        [121] => od.o.i.n.od.in@gmail.com
        [122] => od.o.i.n.od.i.n@gmail.com
        [123] => od.o.i.n.o.din@gmail.com
        [124] => od.o.i.n.o.di.n@gmail.com
        [125] => od.o.i.n.o.d.in@gmail.com
        [126] => od.o.i.n.o.d.i.n@gmail.com
        [127] => o.doinodin@gmail.com
        [128] => o.doinodi.n@gmail.com
        [129] => o.doinod.in@gmail.com
        [130] => o.doinod.i.n@gmail.com
        [131] => o.doino.din@gmail.com
        [132] => o.doino.di.n@gmail.com
        [133] => o.doino.d.in@gmail.com
        [134] => o.doino.d.i.n@gmail.com
        [135] => o.doin.odin@gmail.com
        [136] => o.doin.odi.n@gmail.com
        [137] => o.doin.od.in@gmail.com
        [138] => o.doin.od.i.n@gmail.com
        [139] => o.doin.o.din@gmail.com
        [140] => o.doin.o.di.n@gmail.com
        [141] => o.doin.o.d.in@gmail.com
        [142] => o.doin.o.d.i.n@gmail.com
        [143] => o.doi.nodin@gmail.com
        [144] => o.doi.nodi.n@gmail.com
        [145] => o.doi.nod.in@gmail.com
        [146] => o.doi.nod.i.n@gmail.com
        [147] => o.doi.no.din@gmail.com
        [148] => o.doi.no.di.n@gmail.com
        [149] => o.doi.no.d.in@gmail.com
        [150] => o.doi.no.d.i.n@gmail.com
        [151] => o.doi.n.odin@gmail.com
        [152] => o.doi.n.odi.n@gmail.com
        [153] => o.doi.n.od.in@gmail.com
        [154] => o.doi.n.od.i.n@gmail.com
        [155] => o.doi.n.o.din@gmail.com
        [156] => o.doi.n.o.di.n@gmail.com
        [157] => o.doi.n.o.d.in@gmail.com
        [158] => o.doi.n.o.d.i.n@gmail.com
        [159] => o.do.inodin@gmail.com
        [160] => o.do.inodi.n@gmail.com
        [161] => o.do.inod.in@gmail.com
        [162] => o.do.inod.i.n@gmail.com
        [163] => o.do.ino.din@gmail.com
        [164] => o.do.ino.di.n@gmail.com
        [165] => o.do.ino.d.in@gmail.com
        [166] => o.do.ino.d.i.n@gmail.com
        [167] => o.do.in.odin@gmail.com
        [168] => o.do.in.odi.n@gmail.com
        [169] => o.do.in.od.in@gmail.com
        [170] => o.do.in.od.i.n@gmail.com
        [171] => o.do.in.o.din@gmail.com
        [172] => o.do.in.o.di.n@gmail.com
        [173] => o.do.in.o.d.in@gmail.com
        [174] => o.do.in.o.d.i.n@gmail.com
        [175] => o.do.i.nodin@gmail.com
        [176] => o.do.i.nodi.n@gmail.com
        [177] => o.do.i.nod.in@gmail.com
        [178] => o.do.i.nod.i.n@gmail.com
        [179] => o.do.i.no.din@gmail.com
        [180] => o.do.i.no.di.n@gmail.com
        [181] => o.do.i.no.d.in@gmail.com
        [182] => o.do.i.no.d.i.n@gmail.com
        [183] => o.do.i.n.odin@gmail.com
        [184] => o.do.i.n.odi.n@gmail.com
        [185] => o.do.i.n.od.in@gmail.com
        [186] => o.do.i.n.od.i.n@gmail.com
        [187] => o.do.i.n.o.din@gmail.com
        [188] => o.do.i.n.o.di.n@gmail.com
        [189] => o.do.i.n.o.d.in@gmail.com
        [190] => o.do.i.n.o.d.i.n@gmail.com
        [191] => o.d.oinodin@gmail.com
        [192] => o.d.oinodi.n@gmail.com
        [193] => o.d.oinod.in@gmail.com
        [194] => o.d.oinod.i.n@gmail.com
        [195] => o.d.oino.din@gmail.com
        [196] => o.d.oino.di.n@gmail.com
        [197] => o.d.oino.d.in@gmail.com
        [198] => o.d.oino.d.i.n@gmail.com
        [199] => o.d.oin.odin@gmail.com
        [200] => o.d.oin.odi.n@gmail.com
        [201] => o.d.oin.od.in@gmail.com
        [202] => o.d.oin.od.i.n@gmail.com
        [203] => o.d.oin.o.din@gmail.com
        [204] => o.d.oin.o.di.n@gmail.com
        [205] => o.d.oin.o.d.in@gmail.com
        [206] => o.d.oin.o.d.i.n@gmail.com
        [207] => o.d.oi.nodin@gmail.com
        [208] => o.d.oi.nodi.n@gmail.com
        [209] => o.d.oi.nod.in@gmail.com
        [210] => o.d.oi.nod.i.n@gmail.com
        [211] => o.d.oi.no.din@gmail.com
        [212] => o.d.oi.no.di.n@gmail.com
        [213] => o.d.oi.no.d.in@gmail.com
        [214] => o.d.oi.no.d.i.n@gmail.com
        [215] => o.d.oi.n.odin@gmail.com
        [216] => o.d.oi.n.odi.n@gmail.com
        [217] => o.d.oi.n.od.in@gmail.com
        [218] => o.d.oi.n.od.i.n@gmail.com
        [219] => o.d.oi.n.o.din@gmail.com
        [220] => o.d.oi.n.o.di.n@gmail.com
        [221] => o.d.oi.n.o.d.in@gmail.com
        [222] => o.d.oi.n.o.d.i.n@gmail.com
        [223] => o.d.o.inodin@gmail.com
        [224] => o.d.o.inodi.n@gmail.com
        [225] => o.d.o.inod.in@gmail.com
        [226] => o.d.o.inod.i.n@gmail.com
        [227] => o.d.o.ino.din@gmail.com
        [228] => o.d.o.ino.di.n@gmail.com
        [229] => o.d.o.ino.d.in@gmail.com
        [230] => o.d.o.ino.d.i.n@gmail.com
        [231] => o.d.o.in.odin@gmail.com
        [232] => o.d.o.in.odi.n@gmail.com
        [233] => o.d.o.in.od.in@gmail.com
        [234] => o.d.o.in.od.i.n@gmail.com
        [235] => o.d.o.in.o.din@gmail.com
        [236] => o.d.o.in.o.di.n@gmail.com
        [237] => o.d.o.in.o.d.in@gmail.com
        [238] => o.d.o.in.o.d.i.n@gmail.com
        [239] => o.d.o.i.nodin@gmail.com
        [240] => o.d.o.i.nodi.n@gmail.com
        [241] => o.d.o.i.nod.in@gmail.com
        [242] => o.d.o.i.nod.i.n@gmail.com
        [243] => o.d.o.i.no.din@gmail.com
        [244] => o.d.o.i.no.di.n@gmail.com
        [245] => o.d.o.i.no.d.in@gmail.com
        [246] => o.d.o.i.no.d.i.n@gmail.com
        [247] => o.d.o.i.n.odin@gmail.com
        [248] => o.d.o.i.n.odi.n@gmail.com
        [249] => o.d.o.i.n.od.in@gmail.com
        [250] => o.d.o.i.n.od.i.n@gmail.com
        [251] => o.d.o.i.n.o.din@gmail.com
        [252] => o.d.o.i.n.o.di.n@gmail.com
        [253] => o.d.o.i.n.o.d.in@gmail.com
        [254] => o.d.o.i.n.o.d.i.n@gmail.com
    )
    Array
    (
        [0] => lopu.h@gmail.com
        [1] => lop.uh@gmail.com
        [2] => lop.u.h@gmail.com
        [3] => lo.puh@gmail.com
        [4] => lo.pu.h@gmail.com
        [5] => lo.p.uh@gmail.com
        [6] => lo.p.u.h@gmail.com
        [7] => l.opuh@gmail.com
        [8] => l.opu.h@gmail.com
        [9] => l.op.uh@gmail.com
        [10] => l.op.u.h@gmail.com
        [11] => l.o.puh@gmail.com
        [12] => l.o.pu.h@gmail.com
        [13] => l.o.p.uh@gmail.com
        [14] => l.o.p.u.h@gmail.com
    )
    Array
    (
        [0] => mymai.l@gmail.com
        [1] => myma.il@gmail.com
        [2] => myma.i.l@gmail.com
        [3] => mym.ail@gmail.com
        [4] => mym.ai.l@gmail.com
        [5] => mym.a.il@gmail.com
        [6] => mym.a.i.l@gmail.com
        [7] => my.mail@gmail.com
        [8] => my.mai.l@gmail.com
        [9] => my.ma.il@gmail.com
        [10] => my.ma.i.l@gmail.com
        [11] => my.m.ail@gmail.com
        [12] => my.m.ai.l@gmail.com
        [13] => my.m.a.il@gmail.com
        [14] => my.m.a.i.l@gmail.com
        [15] => m.ymail@gmail.com
        [16] => m.ymai.l@gmail.com
        [17] => m.yma.il@gmail.com
        [18] => m.yma.i.l@gmail.com
        [19] => m.ym.ail@gmail.com
        [20] => m.ym.ai.l@gmail.com
        [21] => m.ym.a.il@gmail.com
        [22] => m.ym.a.i.l@gmail.com
        [23] => m.y.mail@gmail.com
        [24] => m.y.mai.l@gmail.com
        [25] => m.y.ma.il@gmail.com
        [26] => m.y.ma.i.l@gmail.com
        [27] => m.y.m.ail@gmail.com
        [28] => m.y.m.ai.l@gmail.com
        [29] => m.y.m.a.il@gmail.com
        [30] => m.y.m.a.i.l@gmail.com
    )
    P.S.: количество всех возможных вариантов рассчитывается так: 2^(длина слова - 1) - 1
    ну если еще учитывать вариант без точек, тогда: 2^(длина слова - 1)
     
  10. kactetus

    kactetus митя is here )

    Регистр.:
    26 авг 2007
    Сообщения:
    441
    Симпатии:
    278
    MONtrade подскажи, а как ограничить количество emails в массиве.

    Вывожу
    PHP:
    $emails array_rand($emails);
    echo 
    $emails;
    Просто долго думает и выдает такое

    Fatal error: Allowed memory size of 536870912 bytes exhausted (tried to allocate 32 bytes) in func_dotgmail.php on line 21
     
Статус темы:
Закрыта.