- Home
- Categorie
- Coding e Sistemistica
- PHP
- Semplice motore di ricerca tramite parole chiave
-
Semplice motore di ricerca tramite parole chiave
Buongiorno a tutti, ho trovato in rete un semplicissimo motore di ricerca tramite parole chiave. Funziona, ma solo inserendo esattamente i termini indicati.
Come vedete nel codice che segue, l'autore aggiunge piutermini validi, ad un certo punto (hess toy truck), ma la ricerca funziona solamente inserendoli tutti e tre. Vorrei sapere se e
possibile correggere il codice, affinchela ricerca porti alla pagina di arrivo anche se l'utente inserisce uno solo, o piu
di uno, dei termini stabiliti, ma non tutti necessariamente e non nello stesso ordine. La guida ufficiale si trova qui: http://www.learningaboutelectronics.com/Articles/How-to-create-a-search-engine-using-PHP.php[PHP]<?php
$result= $_POST['search'];
$result= strtolower($result);if (strpos($result, "dropbox") == "true")
header ('Location: http://www.dropbox.com');if (strpos($result, "amazon") == "true")
header ('Location: http://www.amazon.com');if (strpos($result, "google") == "true")
header ('Location: http://www.google.com');if (strpos($result, "ebay") == "true")
header ('Location: http://www.ebay.com');if (strpos($result, "wikipedia") == "true")
header ('Location: http://www.wikipedia.org');if (strpos($result, "youtube") == "true")
header ('Location: http://www.youtube.com');if (strpos($result, "hess toy truck") == "true")
header ('Location: https://hesstoytruck.com');if (strpos($result, "lm7805") == "true")
header ('Location: http://www.learningaboutelectronics.com/Articles/What-is-a-LM7805-voltage-regulator');echo "No results found for this search";
?> [/PHP][HTML]<form action="searchpage.php" method="post">
<h1>Product Search</h1>
<label>Enter Product Name </label>
<input type="text"name="search" id="txtName"/><br><br>
<input type="submit" name="submit" id="submit" value="Search"/></form> [/HTML][
](http://www.learningaboutelectronics.com/Articles/How-to-create-a-search-engine-using-PHP.php)
-
Credevo di aver trovato la soluzione, ma come non detto
-
Ciao Cosina
prova questo, lo uso io
[HTML]
<p class="bioheading">Search</p><div class="biodata">
>
<div class="p-3 mb-2 bg-info text-white">
<form name="searchform" onSubmit="return dosearch();">
<table border="1" cellpadding="20" cellspacing="0" bgcolor="#F2F2F2">
<tr>
<td>
Search:
<select name="sengines">
<option value="http://www.google.com/search?q=">Google</option>
<option value="https://www.amazon.com/s?k=">amazon</option>
<option value="https://it.wikipedia.org/w/index.php?sort=relevance&search=">wikipedia</option>
<option value="https://www.bing.com/search?q=">Bing</option>
<option value="
</select>
For:
<input type="text" name="searchterms">
<input type="submit" name="SearchSubmit" value="Search">
</td>
</tr>
</table>
</form><script type="text/javascript">
function dosearch() {
var sf=document.searchform;
var submitto = sf.sengines.options[sf.sengines.selectedIndex].value + escape(sf.searchterms.value);
window.open(submitto);
return false;
}
</script>[/HTML]
conoscendo i parametri di ricerca della query lo puoi personalizzare come vuoi
-
Grazie Alex, lo provo. Anzi, gia
provato, va benissimo, ma non e
quello di cui ho bisogno. Io ho proprio necessita` di inserire delle chiavi di ricerca scelte. Il codice che mi hai dato funziona solo con il titolo esatto delle pagine. Grazie comunque
-
Ciao cosina
Son un po' fuori contesto del tuo progetto quindi non riesco a darti una regola specifica perchè in questi casi solitamente si preleva il campo, si converte in array, si esegue un ciclo e si fa il match.
Tuttavia, provo ad allargare un po' i tuoi orizzonti.
Se in quel caso specifico, utilizzi la funzione di PHP strstr, quanto meno controlli se una delle 3 parole è contenuta.
Esempio:
[PHP]
<?php
$stringa = "hess toy truck";
if (strstr($stringa, $result) == true)
header ('Location: https://hesstoytruck.com');
[/PHP]In pratica, cerchi $result all'interno di $stringa. In caso true, quindi positivo fai redirect.
Fonte: https://www.php.net/manual/en/function.strstr.phpFammi sapere.
Ciao.
-
Io l'ho detto che sei un GENIO e qui lo ripeto. Ciao Ultima e ben ritrovato. Ovviamente funziona, come tutte le soluzioni che mi hai passato finora. Non preoccuparti "del mio progetto", perche` ormai sono passata da molti altri progetti e questo non ha nulla a che fare con il precedente che conoscevi. Grazie mille, sei il mio angelo custode. Un abbraccio virtuale e buona giornata. Ciao
-
Una cosa ancora ti chiedo: in questo modo funziona solo se le parole vengono inserite rispettando il loro ordine. Cioe`, se io scrivo "hess toy", funziona, ma se scrivo "toy hess" non funziona. Esiste un modo per farlo funzionare anche se le parole non rispettano l'ordine? Grazie mille
-
Tutto è possibile.
In questo caso specifico ti basta convertire il parametro in array con la funzione explode() e successivamente effettuare un ciclo per fare il riconoscimento.
Ipotizzando che l'utente scrive toy hess, il parametro verrà creato in:
array("toy", "hess")
e tramite il ciclo foreach che ho inserito, cerco le corrispondenze all'interno della stringa. Nel caso in cui ne incontra una, fa redirect alla url corretta.
Questo sistema grezzo, ha delle falle, perchè funzionerebbe anche in caso di "toy abcd" scritto nel campo input. Per renderlo sempre più performante, devi lavorare sul parametro.
Comunque qui l'esempio.
[PHP]
$strings = "hess toy truck";
$keywords = explode(" ", $result);
foreach($keywords as $keyword)
{
if( strstr($strings, $keyword) == true )
{
header("Location: https://hesstoytruck.com");
break;
exit();
}
}
[/PHP]
-
Perfetto, grazie mille! Provo tutto con calma e ci giocherello per i perfezionamenti. In caso di difficolta`, verro di nuovo a romperti le scatole, ma confido di farcela da sola. Ciao Ultima, sei prezioso