Come fare un motore di ricerca a dominio con PHP

September 21

Come fare un motore di ricerca a dominio con PHP


PHP è un linguaggio di scripting potente che è più spesso utilizzato dagli sviluppatori web di creare dinamiche pagine Web e applicazioni Web. La gamma di funzionalità che PHP mette a disposizione un programmatore è praticamente infinita, essendo in grado di creare dati da inviare a un utente così come i file manipolare e voci del database sul back-end. A causa di questo, PHP è una scelta eccellente di lingua, se è necessario costruire un motore di ricerca per il tuo sito.

istruzione

1 Creare modulo web del motore di ricerca. In questo esempio, il file dello script PHP si chiamerà "search.php." Il modulo avrà bisogno di una casella di testo e un pulsante "Invia".

<Form action = metodo search.php = get>

<Input name = key> <input type = Valore presentare = Ricerca>

</ Form>

2 Creare una funzione per la ricerca di file e directory del server. Fare una funzione permetterà facile ricerche di sottodirectory. La funzione avrà un parametro richiesto, che sarà la stringa di ricerca.

<?

Funzione di ricerca ($ parola chiave) {

}

?>

3 Aggiungere un parametro opzionale per i percorsi sottodirectory. Se questo secondo parametro non è specificato, la funzione imposterà ricerca nella directory corrente.

Funzione di ricerca ($ parola chiave) {

if(func_num_args()>1) $dir = func_get_arg(1);

"." Altro $ dir =;

}

4 Leggere il contenuto della directory in una matrice. Aggiungere questo codice alla funzione di ricerca ().

$ DirStream = opendir ($ dir);

while ($ nextfile = readdir ($ dirStream)) $ dirArray [] = $ nextfile;

closedir ($ dirStream);

5 Scorrere i contenuti della matrice directory utilizzando un ciclo foreach.

foreach ($ dirArray da $ thisFile) {

}

6 Creare una variabile per memorizzare il percorso relativo dallo script PHP per il file da ricercare. Aggiungere questo all'interno del ciclo foreach.

$ ThisPath = $ dir "/" $ thisFile..;

7 Aggiungere una riga per evitare che il motore di ricerca di mostrare i risultati di file nascosti (come ".htaccess").

if (substr ($ thisFile, 0,1) == ".") continua;

8 Verificare se il nome del file corrente in $ dirArray è in realtà una sottodirectory, nel qual caso verrà memorizzato in un array per la ricerca in un secondo momento.

if (tipo di file ($ thisPath) == "dir") {

$ Subdir [] = $ thisFile;

proseguire;

}

9 Controllare il contenuto del file corrente per vedere se contiene la stringa di ricerca memorizzato in $ parola chiave, e, in caso affermativo, visualizzare un collegamento al file. Il tuo ciclo foreach dovrebbe apparire come questo:

foreach ($ dirArray da $ thisFile) {

$ ThisPath = $ dir "/" $ thisFile..;

if (substr ($ thisFile, 0,1) == ".") continua; // Non cercare file nascosti, che iniziano con "."

if (tipo di file ($ thisPath) == "dir") {

$ Subdir [] = $ thisPath; // Aggiungere a un elenco di array sottodirectory

proseguire;

}

if (strpos (file_get_contents ($ thisPath), $ parola chiave)! == false)

echo "<a href=\"".str_replace("./","",$thisPath)."\">" $ thisFile "</a> \ n"..;

}

10 Aggiungere una riga alla fine della funzione di ricerca () per scorrere l'array $ subdir e cercare tutte le sottodirectory. Se non si desidera ricercare le sottodirectory, non aggiungere questa linea.

foreach ($ subdir da $ thisDir) ricerca ($ chiave, $ thisDir);

11 Aggiungere una riga finale di PHP dopo la funzione completa di ricerca () per vedere se i dati è stato inviato con, e, in caso affermativo, chiamare la funzione di ricerca (). Il vostro codice completo dovrebbe essere simile a questo:

<Form action = metodo search.php = get>

<Input name = key> <input type = Valore presentare = Ricerca>

</ Form>

<?

Funzione di ricerca ($ parola chiave) {

if (func_num_args ()> 1) $ dir = func_get_arg (1);

"." Altro $ dir =;

$ DirStream = opendir ($ dir);

while ($ nextfile = readdir ($ dirStream)) $ dirArray [] = $ nextfile;

closedir ($ dirStream);

foreach ($ dirArray da $ thisFile) {

$ ThisPath = $ dir "/" $ thisFile..;

if (substr ($ thisFile, 0,1) == ".") continua;

if (tipo di file ($ thisPath) == "dir") {

$ Subdir [] = $ thisPath;

proseguire;

}

if (strpos (file_get_contents ($ thisPath), $ parola chiave)! == false)

echo "<a href=\"".str_replace("./","",$thisPath)."\">" $ thisFile "</a> \ n"..;

}

foreach ($ subdir da $ thisDir) ricerca ($ chiave, $ thisDir);

}

if (isset ($ _ GET [ 'chiave']) && $ _GET [ 'chiave'] = ""!) di ricerca ($ _ GET [ 'chiave']);

?>

Consigli e avvertenze

  • Si può facilmente aggiungere funzionalità aggiuntive al motore di ricerca, come ad esempio le ricerche condizionali e risultati ordinati, facendo piccole modifiche alla funzione di ricerca () o chiamandolo più volte.
  • L'esempio è poco più di uno script PHP nudo. Assicurarsi di aggiungere tutti i tag HTML necessari (come "<doctype>" e "<body>") per rendere i vostri script di standard-compliant.