Регулярка для парсига дедиков

Тема в разделе "Как сделать...", создана пользователем zilon, 10 ноя 2012.

  1. zilon

    zilon

    Регистр.:
    30 июл 2011
    Сообщения:
    370
    Симпатии:
    147
    запилил регулярку для парсинга сбрученых дедов

    PHP:
    <?
    $voruem file_get_contents("http://icq.iforum.name/viewtopic.php?id=32");
    preg_match_all("/([0-9]{1,3}).([0-9]{1,3}).([0-9]{1,3}).([0-9]{1,3})(@{1}).*/"$voruem$found);
    $i 0;
    while (
    $i count($found[0])) {
    echo 
    "{$found[0][$i]}<br>";
    $i++;
    }
    ?>
    но прога которая чекает их на валидность - DVAlidChecker1.1, требует строки такого вида

    ip@login;pass

    а регулярка которая выше, пропускает такие

    88.116.1.22 admin ; password

    и такие строки

    58.211.165.178:3389 Administrator; 123456

    помогите пжалуста составить регулярку так чтобы она сохраняла только строки такого вида - ip@login;pass без пробелов, двоеточий и портов)
     
  2. zilon

    zilon

    Регистр.:
    30 июл 2011
    Сообщения:
    370
    Симпатии:
    147
    подскажите кто не будь как удалять строчки у которых идут два переноса строк подрят, то есть <br /><br> или <br><br> очень нужно :thenks:

    PHP:
     <?php
    header 
    ("Content-Type: text/plain; charset=utf-8");
    $url 'http://telemoney.moy.su/news/khaljavnaja_razdacha_dedikov_aprel_2012_god_maj_ijun_2012/2012-04-25-50';
    $string file_get_contents("$url");
    preg_match_all("/([0-9]{1,3}).([0-9]{1,3}).([0-9]{1,3}).([0-9]{1,3})?@.*?;.{1,20}<br/"$string$found);
    $i 0;
    while (
    $i count($found[0])) {
    echo 
    "{$found[0][$i]}>";
    $i++;
    }
    ?> 
    [​IMG]
     
  3. newbik

    newbik Создатель

    Регистр.:
    22 апр 2008
    Сообщения:
    14
    Симпатии:
    8
    PHP:
    <?php
    $url 
    'http://telemoney.moy.su/news/khaljavnaja_razdacha_dedikov_aprel_2012_god_maj_ijun_2012/2012-04-25-50';
    $string file_get_contents($url);
    preg_match_all("/([0-9]{1,3}).([0-9]{1,3}).([0-9]{1,3}).([0-9]{1,3})@{1,}([^;]+);([0-9A-z_-]+)/s"$string$found);

    $total sizeof($found[1]);
    for(
    $i=0$i<$total$i++) {
    $ip $found[1][$i].'.'.$found[2][$i].'.'.$found[3][$i].'.'.$found[4][$i];
    $login $found[5][$i];
    $pass $found[6][$i];

    echo 
    $ip.'@'.$login.';'.$pass."\r\n";
    }
    ?>
     
    zilon нравится это.
  4. zilon

    zilon

    Регистр.:
    30 июл 2011
    Сообщения:
    370
    Симпатии:
    147
    подскажите пжалуста почему неправельной кодировке отображается, русский текст который под спойлером, вот пример http://new-muzon.net/DEDPARS/index.php

    PHP:
    <?php
     
    header 
    ("Content-Type: text/plain; charset=UTF-8");
    $stringg $_POST['textarea'];
    $stringg iconv ("CP1251""UTF-8"$stringg);
    $stringg explode("\n"$stringg);
     
    foreach (
    $stringg as $urlded) {
     
    $string file_get_contents($urlded);
    preg_match_all("/([0-9]{1,3}).([0-9]{1,3}).([0-9]{1,3}).([0-9]{1,3})@{1,}([^;]+);([0-9A-z_-]+)/s"$string$found);
    $total sizeof($found[1]);
    for(
    $i=0$i<$total$i++) {
    $ip $found[1][$i].'.'.$found[2][$i].'.'.$found[3][$i].'.'.$found[4][$i];
    $login $found[5][$i];
    $pass $found[6][$i];
     
    echo 
    $ip.'@'.$login.';'.$pass."\r\n";
    echo 
    "<br>";
    }
    }
     
     
    ?>
     
  5. o_nix

    o_nix

    Регистр.:
    7 ноя 2007
    Сообщения:
    1.073
    Симпатии:
    1.039
    всё дело в том что с разных форумов получается контент в разной кодировке

    utf-8 или windows-1251

    нужно привести к какой то одной кодировке используя iconv или mb_convert_encoding и уже потом выводить общим списком
     
  6. zilon

    zilon

    Регистр.:
    30 июл 2011
    Сообщения:
    370
    Симпатии:
    147
    то есть сначала нужно все строки спарсить в массив, потом весь масив перекодировать в одну кодировку, а потом вывести?
     
  7. o_nix

    o_nix

    Регистр.:
    7 ноя 2007
    Сообщения:
    1.073
    Симпатии:
    1.039
    нет после парсинга каждого url надо определить в какой кодировке получен контент

    если он получен не в той которая будет на выводе то конвертировать его в нужный и уже потом регулярку натравливать и далее

    на выходе получатся данные в одной кодировке
     
    zilon нравится это.