PDA

Просмотр полной версии : Как сделать поиск по маске *?


dimash
25.08.2008, 16:35
Здравствуйте, встречал решения на eliteuins.com, asechka, когда вписываешь номер и можешь найти по маске интересующий. Для этого используют обязательно регулярные выражения? Дайте рабочий пример.

OnArs
25.08.2008, 16:58
Здравствуйте, встречал решения на eliteuins.com, asechka, когда вписываешь номер и можешь найти по маске интересующий. Для этого используют обязательно регулярные выражения? Дайте рабочий пример.
Ну, в данном случае использовать регулярные выражения проще и удобнее всего.

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

fucker"ok
25.08.2008, 17:12
В mysql ищи по теме LIKE, там можно легко сделать аналог *?
* - любое кол-во символов
? - один символ.
Базу лучше как-то по умному разбить и пользоваться кешированием. А то миллионы номеров гонять трудновато))

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

dimash
25.08.2008, 17:12
У меня не номер, а элемент массива, но наверное подойдет.

fucker"ok
25.08.2008, 17:29
А. Я думал ты поиск по номерам асек делаешь. Ну если элементов не много, т можно и regexp :)

Chaak
25.08.2008, 18:01
<?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 цикл сам прикрутишь