Nur bestimmte Zeilen eines Tabellenfeldes ausgeben?

Lemmingz Shadow

Grünschnabel
Hi zusammen,

Da ich mit meiner IRC-Frage hier wohl einen Nerv getroffen haben :-) nun mal was ganz anderes.

Ich habe folgendes Problem: Ich habe ein Suchfunktion geschrieben, die ein Feld aus meiner Datenbank nach bestimmten Wörtern durchsucht, so wie auch in den Tutorials hier auf der Seite beschrieben:

PHP:
$suchnach = explode(' ',$searchstring);
$sql = 'select * from tsfserv where ';
for($i=0; $i<count($suchnach); $i++){
$sql .= "(text like '%".$suchnach[$i]."%')";
if($i<count($suchnach)-1){
$sql .= ' and ';}
}

Wenn ich die Ergenisse dieser Suche ausgebe habe ich allerdings immer noch das komplette Feld "text". Um das ganze noch zu verdeutlichen habe ich die gesuchen Wörter rot markieren lassen:

PHP:
$clean = $row[5];
  for($i=0; $i<count($suchnach); $i++){
	  $clean = eregi_replace($suchnach[$i], '<font color=red><b>'.$suchnach[$i].'</b></font>', $clean);}
  echo $clean;

Ich möchte nun aber nur noch die Zeilen aus dem Feld "text" ausgeben in den die gesuchten Wörter vorkommen.
Villeicht hilft es, das die einzelnen Zeilen im Feld "text" schon mit einem <br> getrennt sind!

An dieser Stelle komme ich jetzt nicht weiter!
Vielleicht kann mir jemand weiterhelfen!

Danke im Vorraus, Lemmingz Shadow
 
Das erste Codeschnipsel könnte man schon mal so vereinfachen:
PHP:
$suchnach = explode(' ',$searchstring);
$sql = 'SELECT * FROM tsfserv WHERE ';
$sql .= "(text LIKE '%".implode("%') AND (text LIKE '%", $suchnach)."%')";
Ist aber letztendlich Geschmackssache. Ich find's so schöner :)

Und zum eigentlichen Problem:
PHP:
$clean_lines = explode("<br>", $row[5]);
$regex = "((".implode(")|(", $suchnach)."))";

foreach ($clean_lines as $index => $line) {
	if (eregi($regex, $line)) {
		echo "Zeile ".($index+1).": ".
			eregi_replace($regex, "<font color=red><b>\\\\1</b></font>", $line).
			"<br>";
	}
}

HTH :)
 
Wow, schönen Dank für die schnelle Hilfe! :-)

Ich werde gleich mal testen ob ich es jetzt hinbekomme.

Vielen Dank, Lemmingz Shadow

EDIT: Hat bestens funktioniert! Nochmals schönen Dank!!!
 
Zuletzt bearbeitet:
Zurück