Teilwerte anzeigen lassen

rernanded

Erfahrenes Mitglied
Hallo,

mit meinem Code werden alle Werte des Feldes inhalt angezeigt die abc mindestens einmal enthalten. Ich suche Code um ALLE abc (=Teilwerte des Wertes inhalt) anzuzeigen sowie 50 Zeichen davor und 50 Zeichen danach. Also ALLE Vorkommen von abc und Textstellen davor und danach.

<?php
include_once("searchit_verbindung.php");
$ergebnis = mysql_query(" SELECT inhalt FROM seiten WHERE inhalt LIKE '%abc%' ");
while($row = mysql_fetch_object($ergebnis))
{
echo "$row->inhalt";
}
?>
 
Zuletzt bearbeitet:
Hallo und willkommen im Forum,

eine Bitte vorweg: das nächste Mal bitte Code-Tags (BB-Code) verwenden. Hier eine mögliche Lösung:

PHP:
/**
 * Diese Funktion liefert einen Teil-Text anhand eines bestimmten 
 * Suchwortes mit einer bestimmten Länge davor und danach
 *
 * @param $text Ist der Text, der durchsucht werden soll
 * @param $suchwort Ist das Wort, vor und nach dem ein Teiltext zurück gegeben werden soll
 * @param $anzahl_zeichen Legt die Anzahl der Zeichen fest, die vor und nach dem Suchwort
 *        zurück gegeben werden sollen
 *
 * @return Den Teilstring bei Erfolg oder eine Exception im Fehlerfall
 *****************************************************************************************/
function nur_x_davor_und_danach($text, $suchwort, $anzahl_zeichen)
{
  // Position des Suchworts finden
  $position_suchwort = stristr($text, $suchwort); // oder strstr, wenn Groß-/Kleinschreibung unterschieden werden soll
  
  // Prüfen
  if(!$position_suchwort)
	throw new Exception("Konnte das Suchwort im Text nicht finden");
  
  // x-Zeichen + Suchwort + x-Zeichen aus dem Text holen
  $teil_text = substr($text, $start - $anzahl_zeichen, strlen($suchwort) + $anzahl_zeichen)
  
  // Prüfen
  if(!$teil_text)
    throw new Exception("Konnte den String nicht die gewünschte Teilmenge aufspalten");
  
  // Zurück geben
  return $teil_text;
}

while($row = mysql_fetch_object($ergebnis))
{
echo nur_x_davor_und_danach($row->inhalt, "abc", 50);
}

UNGETESTET!
 
Zuletzt bearbeitet:
Zurück