Есть такой скрипт поиска и вывода кеев из файла .txt PHP: <form action="index.php" method="GET"> <input name="key" type="text" size="60"></input> <input type="submit" value="OK"></input> </form> <?php if ((isset($_GET["key"]))&&(!empty($_GET["key"]))){ $key = $_GET["key"]; $key_length = strlen($key); @$file = fopen("keys.txt", "r"); if ($file){ flock($file, LOCK_SH); flock($file, LOCK_UN); $i = 0; while (!feof($file)){ $arr[$i] = fgets($file, 200); $i++; } fclose($file); $i = 0; for ($i=0; $i<count($arr); $i++){ $l = 0; for ($l=0; $l<strlen($arr[$i])-$key_length; $l++){ if ($key == substr($arr[$i],$l,$key_length)){ echo $arr[$i] . "<br>"; } } } } else{ echo "Not Found"; } } ?> но есть несколько вопросов : 1. как сделать чтоб когда вводишь например : красный карандаш он искал не только точно заданую фразу но и с перестановками, например карандаш красный, карандаш он красный. 2. и как сделать чтоб он выводил уже перемешаными искомые кеи. Огромное спасибо Всем кто откликнется .
1.Разбей на 2 слова фразу. Можно игнорировать символы. if ($key1+$key2 == substr($arr[$i],$l,$key_length) || $key2+$key1 == substr($arr[$i],$l,$key_length)) Как-то так. Вообще php я не очень знаю, было бы на ASP.net ))
не поленился бы, код отформатировал. Абсолютно не читаемый. if ((isset($_GET["key"]))&&(!empty($_GET["key"]))){ $i = 0; for ($i=0;...
PHP: <?php if ((isset($_GET["key"]))&&(!empty($_GET["key"]))){ $key = $_GET["key"]; $key_length = strlen($key); $keys = explode(' ', $key); @$file = fopen("keys.txt", "r"); if ($file){ flock($file, LOCK_SH); flock($file, LOCK_UN); $i = 0; while (!feof($file)){ $arr[$i] = fgets($file, 200); $i++; } fclose($file); $i = 0; for ($i=0; $i<count($arr); $i++){ $ok = 1; for($j=0; $J<sizeof($keys); $j++) if (strpos($arr[$i], $keys[$j]) === FALSE) ok = 0; if(ok == 1) echo $arr[$i] . "<br>"; } } else{ echo "Not Found"; } } ?> если я ничего не напутал, то он ищет каждое слово и если все слова есть в строке, строка выводится
WNZRS выдает ошибку в этой строке if (strpos($arr[$i], $keys[$j]) === FALSE) ok = 0; Parse error: syntax error, unexpected '=' не мог бы посмотреть в чем проблема ? буду очень признателен
Он забыл знак доллара перед переменной ok Это полнейший быдлокод. Я нифига не понял, что делает твой скрипт. Опиши подробно задачу скрипта. У тебя есть файл кеев, в формате: кей1 кей2 кей3 .. Ты вводишь кей в формочку и нажимаешь ок. Он должен просто вывести ответ, нашел ли он такую запись в файле?
Спасибо огромное но теперь Fatal error: Maximum execution time of 30 seconds exceeded но файл с кеями не большей
Solker у меня файл с разноплановыми кеями я ввожу искомый кей и мне нужно чтобы он вывел все строки где встречаются слово или слова которые я ввел
Solker он работает все выводит но выводит только конкретые кеи если я введу "кей1 красный" то он выдает мне все кеи где встречается только "кей1 красный" а мне нужно чтоб он выдавал еще все строки где встречабтся вводимые кеи
Эм. PHP: <form method="GET"> <input name="key" type="text" size="60"></input> <input type="submit" value="OK"></input> </form> <?php if ($_GET["key"]){ $key = trim($_GET["key"]); $file = file("family.txt"); foreach($file as $line) { if(stristr($line,$key)) { $line = str_ireplace($key,'<font color="red">'.$key.'</font>',$line); echo $line.'<br/>'.chr(10); } } } ?> Но в строке Superlogin По поиску perl Он найдет эту строчку. Это надо? Или я не понял.
Solker да ты понял правильно скрипт что ты дал делает тоже что и мой но твой гораздо понятнее и меньше. но он всеравно ищет заданую фразу, а нужно чтоб искал и выводил строки в которых встречаются 2 введеных в форму слова в разных местах строки. например в файле находится карта памяти красная карта памяти черная карта памяти карта не памяти памяти карта процессор индия куртка я в форму ввожу : карта памяти он выдаст : карта памяти красная карта памяти черная карта памяти а нужно чтоб выдал : карта памяти красная карта памяти черная карта памяти карта не памяти памяти карта вродебы понятно написал а тебе спасибо большее !!!
тоесть исходя из прошлого примера моего скрипт мне не выдает карта не памяти памяти карта потому что слова эти есть но они стоят не в той последовательности в которй я ввел в форму
PHP: <?php if ((isset($_GET["key"]))&&(!empty($_GET["key"]))) { $key = $_GET["key"]; $fkeys = file('keys.txt'); $keys = explode(' ', $key); $found = ''; for($i=0; $i<sizeof($fkeys); $i++) { $ok = 1; for($j=0; $j<sizeof($keys); $j++) { if(stripos($fkeys[$i], $keys[$j]) === false) $ok = 0; } if($ok == 1) { $found .= $fkeys[$i].'<br>'; } } if(strlen($found) > 1) { echo $found; } else echo 'Not found'; } ?>
а еще я бы покопал в сторону регулярных выражений. очень интересная штука, которая позволяет красиво решать всякие такие задачи.