IT-Academy Logo
Sign Up Login Help
Home - Programmieren - PHP - PHP: Suchbegriffe für Suchmaschinen trennen



PHP: Suchbegriffe für Suchmaschinen trennen

Dies ist ein komplettes Skript das zeigt wie Suchbegriffe, die zwischen Anführungszeichen stehen, getrennt werden von den anderen Suchbegriffen, wie man dies auch von Suchmaschinen her kennt.


Autor: Patrick Faes (dreamer)
Datum: 08-08-2005, 22:46:45
Referenzen: siehe unten
Schwierigkeit: Fortgeschrittene
Ansichten: 7704x
Rating: 7 (2x bewertet)

Hinweis:

Für den hier dargestellte Inhalt ist nicht der Betreiber der Plattform, sondern der jeweilige Autor verantwortlich.
Falls Sie Missbrauch vermuten, bitten wir Sie, uns unter missbrauch@it-academy.cc zu kontaktieren.

[Druckansicht] [Als E-Mail senden] [Kommentar verfassen]



Einführung

Eine gute Suchmaschine, egal ob Google oder eine Suchmaschine für einer Newsseite, braucht eine gute Erkennung der gesuchten Begriffe. Dieser Artikel möchte zeigen wie Sie die Suchbegriffe aus einem Formularfeld extrahieren, wobei die gesuchten Begriffe die zwischen Anführungszeichen stehen zusammen bleiben. Dabei erkennt das Skript sowohl Suchbegriffe die zwischen doppelte oder einfache Anführungszeichen stehen.

So werden z.B. aus

"eine Reihe" von gesuchten Begriffen

die folgende Suchbegriffe geholt:
  • eine Reihe
  • von
  • gesuchten
  • Begriffen
Unten steht das Skript womit Sie dies erreichen. Sie können es einfach kopieren und müssen nur wenig anpassen. Das Skript ist reichlich kommentiert und an Stellen wo Sie selbst noch etwas verändern sollten, werden Sie darauf hingewiesen. Unten stehen noch Referenzen im Falle Sie noch etwas mehr wissen möchten über ein bestimmtes Thema.

Das Skript
<?php
/* © www.IT-Academy.cc */

$Suchwoerter = $_POST['Suchbegriffe'];
/* Der Besucher soll die Suchbegriffe in einem Formular1 eingeben. Das dazugehörige Eingabefeld nennt sich "Suchbegriffe" (Schriftgröße beachten!!!). */
$mit_Anfuehrungszeichen = array();
$ohne_Anfuehrungszeichen = array();
/* Die Variablen $mit_Anfuehrungszeichen und $ohne_Anfuehrungszeichen beinhalten (wie die Namen schon sagen) die Suchwöter mit bzw. ohne Anführungszeichen. Der Grund sie schon vorab zu deklarieren ist der dass, wenn nur ein Suchbegriff gefunden wird, dieser zwar in einer dieser Variablen gespeichert wird, doch diese Variable dann vom Typ String ist und kein Array2. */
$verbotene_Zeichen = '/[,\\\+"']/U';
/* In der Variable $verbotene_Zeichen wird eine Zeichenklasse erstellt für einen regulären Ausdruck3. Das Ziel ist es nachher verbotene Zeichen (in diesem Fall ein Schrägstrich, ein Komma und ein Plus-Zeichen) aus den Suchbegriffen zu filtern. Ansonsten könnte jemand das Script nach Ausrufezeichen oder dergleichen durchsuchen. Das ist ja nicht der Sinn der Sache. */
preg_match_all('/("|\')(.*)("|\')/U', $Suchwoerter, $mit_Anfuehrungszeichen);
$Suchwoerter = preg_replace('/("|\')(.*)("|\')/U', '', $Suchwoerter);
$ohne_Anfuehrungszeichen = explode(' ', $Suchwoerter);
$Suchwoerter = array_merge($mit_Anfuehrungszeichen[0], $ohne_Anfuehrungszeichen);
/* Mit der Funktion preg_match_all()4 werden die Suchbegriffe die zwischen Anführungszeichen stehen in der Variable $mit_Anfuehrungszeichen gespeichert. Wenn diese gespeichert wurden, können sie mit der Funktion preg_replace()5 gelöscht werden. Was davon übrig bleibt, wird mit der Funktion explode()6 am Leerstellen gesplittet und in der Variable $ohne_Anfuehrungszeichen gespeichert. Mit der Funktion array_merge()7 können die Arrays dann zu einem Array mit dem Namen $Suchwoerter zusammen gesetzt werden. */
function filtern($Suchwort)
{
   global $verbotene_Zeichen;
   $Kontrolle = preg_replace($verbotene_Zeichen, '', $Suchwort);
   $Kontrolle = str_replace(' ', '', $Kontrolle);
   if (strlen($Kontrolle) >= 3) ) return true;
}

$Suchwoerter = array_filter($Suchwoerter, 'filtern');
/* Mit der Funktion array_filer()8 werden die Suchwörter an einer sogenannten Callback-Funktion übergeben um Fehlerhafte Suchbegriffe (die z.B. leer sind oder nur verbotene Zeichen beinhalten) sofort zu löschen. In diesem Code wird das gemacht indem mit der Funktion preg_replace()5 werden zuerst die verbotene Zeicher aus einer Testvariable herausgenommen und danach werden mit der Funktion str_replace()8 jegliche Leerstellen herausgenommen. Wenn danach noch ein String übrigbleibt der zumindest drei Zeichen lang ist (gemessen mit der Funktion strlen()9), dann wird die Variable beibehalten.
Die Kriterien hier können Sie nach Belieben ändern. */
function korrigieren($Suchwort)
{
   global $verbotene_Zeichen;
   $Suchbegriff = trim($Suchwort);
   $Suchbegriff = preg_replace($verbotene_Zeichen, '', $Suchbegriff);
   $Suchbegriff = preg_replace('/\040+/', ' ', $Suchbegriff);
   return $Suchbegriff;
}

$Suchwoerter = array_map('korrigieren', $Suchwoerter);
?>
/* Als letztes wird noch mit der Funktion array_map()10 jeder Suchbegriff nochmal gecheckt. Mit der Funktion trim()11 werden überflüssige Leerstellen links und rechts gelöscht. Mit preg_replace()5 werden nacheinander die verbotene Zeichen und überflüssige Leerzeichen im String gelöscht. Eine Leerstelle wird mit angedeutet mit \040. Wenn mehr als einer nacheinander stehen, dann werden sie ersetzt eine einzige Leerstelle.
Die Kriterien hier können Sie nach Belieben ändern.
Jetzt befinden sich im Array $Suchwoerter alle Suchbegriffe. */

  1. Formulare werden dazu verwendet Daten vom User am Server zu schicken: mehr dazu
  2. ein Array ist ein Container für mehrere Variable Werten: mehr dazu
  3. mit reguläre Ausdrücke sucht PHP nach Muster: mehr dazu und noch mehr dazu
  4. mit der Funktion preg_match_all() sucht PHP nach alle Übereinstimmungen mit einem Muster in einer Variable: mehr dazu
  5. mit der Funktion preg_replace() ersetzt PHP alle Übereinstimmungen mit einem Muster in einer Variable: mehr dazu
  6. mit der Funktion explode() splittet PHP einen String an alle Übereinstimmingen mit einem Aufgegebenen String: mehr dazu
  7. mit der Funktion array_merge() f&uumgt PHP zwei oder mehrere Arrays zusammen zu einem einzigen Array: mehr dazu
  8. mit der Funktion str_replace() kann PHP einen String ersetzen: mehr dazu
  9. mit der Funktion strlen() zähl PHP wieviele Zeichen in einem String stehen: mehr dazu


[back to top]



Userdaten
User nicht eingeloggt

Gesamtranking
Werbung
Datenbankstand
Autoren:04511
Artikel:00815
Glossar:04116
News:13565
Userbeiträge:16552
Queueeinträge:06248
News Umfrage
Ihre Anforderungen an ein Online-Zeiterfassungs-Produkt?
Mobile Nutzung möglich (Ipone, Android)
Externe API Schnittstelle/Plugins dritter
Zeiterfassung meiner Mitarbeiter
Exportieren in CSV/XLS
Siehe Kommentar



[Results] | [Archiv] Votes: 1158
Comments: 0