Как сделать поиск по маске *?

Discussion in 'PHP' started by dimash, 25 Aug 2008.

  1. dimash

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

    Joined:
    14 Apr 2008
    Messages:
    78
    Likes Received:
    2
    Reputations:
    0
    Здравствуйте, встречал решения на eliteuins.com, asechka, когда вписываешь номер и можешь найти по маске интересующий. Для этого используют обязательно регулярные выражения? Дайте рабочий пример.
     
  2. OnArs

    OnArs Banned

    Joined:
    1 Aug 2008
    Messages:
    211
    Likes Received:
    13
    Reputations:
    1
    Ну, в данном случае использовать регулярные выражения проще и удобнее всего.

    P.s. Можно поизвращаться и сделать так:
    Запрос: 7******
    1. Проверяем длину
    2. Проверяем где стоит звёздочка
    3. Перебираем по базе все нумы с данной длиной и имеющие в первой позиции символ 7
    В принципе просто... НО! Если маска будет например
    7*8*2**74
    Проверять будет сложновато... Но всё таки возможно :)
     
  3. fucker"ok

    fucker"ok Elder - Старейшина

    Joined:
    21 Nov 2004
    Messages:
    578
    Likes Received:
    274
    Reputations:
    91
    В mysql ищи по теме LIKE, там можно легко сделать аналог *?
    * - любое кол-во символов
    ? - один символ.
    Базу лучше как-то по умному разбить и пользоваться кешированием. А то миллионы номеров гонять трудновато))

    Вообще когда-то такое делал, правда очень давно. Исходники потерялись.
    Проблемы и примерно как это делалось писал тут /threadnav11882-1-10.html
     
  4. dimash

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

    Joined:
    14 Apr 2008
    Messages:
    78
    Likes Received:
    2
    Reputations:
    0
    У меня не номер, а элемент массива, но наверное подойдет.
     
  5. fucker"ok

    fucker"ok Elder - Старейшина

    Joined:
    21 Nov 2004
    Messages:
    578
    Likes Received:
    274
    Reputations:
    91
    А. Я думал ты поиск по номерам асек делаешь. Ну если элементов не много, т можно и regexp :)
     
  6. Chaak

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

    Joined:
    1 Jun 2008
    Messages:
    1,059
    Likes Received:
    1,067
    Reputations:
    80
    PHP:
    <?php
    $uins 
    file('uins.txt');    //массив с уинами
    $query '124562';            //уин для поиска
    $deep '3';


    foreach(
    $uins as $uin){
        if(
    preg_match("#^".substr($query,0,$deep)."#",$uin)){
            echo 
    $uin."<br>";
        }
    }
    ?>
    ну что нибудь типа такого. если знаешь php цикл сам прикрутишь