September 21
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.
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']);
?>