Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   Нужна малюсенькая помощь по готовому скрипту (https://forum.antichat.xyz/showthread.php?t=173380)

newold 24.01.2010 20:02

Нужна малюсенькая помощь по готовому скрипту
 
Есть такой скрипт поиска и вывода кеев из файла .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($fileLOCK_SH);
flock($fileLOCK_UN);
$i 0;
while (!
feof($file)){
$arr[$i] = fgets($file200);
$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. и как сделать чтоб он выводил уже перемешаными искомые кеи.

Огромное спасибо Всем кто откликнется :) .

Alv 24.01.2010 20:10

1.Разбей на 2 слова фразу. Можно игнорировать символы.
if ($key1+$key2 == substr($arr[$i],$l,$key_length) || $key2+$key1 == substr($arr[$i],$l,$key_length))
Как-то так. Вообще php я не очень знаю, было бы на ASP.net ))

newold 24.01.2010 20:14

Вы конечно извените а куда это вставить ? (краснеющий смайлик)

Solker 24.01.2010 20:18

не поленился бы, код отформатировал. Абсолютно не читаемый.

if ((isset($_GET["key"]))&&(!empty($_GET["key"]))){

$i = 0;
for ($i=0;...

:D

newold 24.01.2010 20:19

этот код мне посоветовали на этом сайте :), а почему не читаемый ?

WNZRS 24.01.2010 20:23

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($fileLOCK_SH);
flock($fileLOCK_UN);
$i 0;
while (!
feof($file)){
$arr[$i] = fgets($file200);
$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]) === FALSEok 0;
if(
ok == 1)
echo 
$arr[$i] . "<br>";
}
}
else{
echo 
"Not Found";
}
}
?>

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

newold 24.01.2010 20:33

WNZRS

выдает ошибку в этой строке if (strpos($arr[$i], $keys[$j]) === FALSE) ok = 0;

Parse error: syntax error, unexpected '='

не мог бы посмотреть в чем проблема ? буду очень признателен :)

Solker 24.01.2010 20:35

Он забыл знак доллара перед переменной ok

Это полнейший быдлокод. Я нифига не понял, что делает твой скрипт. Опиши подробно задачу скрипта.
У тебя есть файл кеев, в формате:
кей1
кей2
кей3
..
Ты вводишь кей в формочку и нажимаешь ок.
Он должен просто вывести ответ, нашел ли он такую запись в файле?

newold 24.01.2010 20:40

Спасибо огромное :)

но теперь Fatal error: Maximum execution time of 30 seconds exceeded

но файл с кеями не большей

newold 24.01.2010 20:43

Solker

у меня файл с разноплановыми кеями я ввожу искомый кей и мне нужно чтобы он вывел все строки где встречаются слово или слова которые я ввел :)


Время: 04:19