Suchergebniss mit CSS hervorheben

Chucky-GFX

Mitglied
Hallo zusammen!

Ich möchte gerne folgendes tun:

Ich hab eine Suche gebaut, welche den Inhalt der SQL Datenbank durchsucht...
nun will ich das der gesuchte String in der Ausgabe farblich mit CSS hinterlegt wird...ist dies irgendwie ohne riesen umstände möglich ?
 
Hi!

Du hast jetzt keine Details bekannt gegeben.
Aber ich würde es evtl. so angehen.

Code:
$text = str_replace($search, "<span class='hervorgehoben'>".$search."</span>", $text);

lg,
Daniel
 
Also es werden die Daten alle per SQL query abgefragt, nun sind in der SQL Datanbank 8 Felder die alle nach dem gesuchten wort oder der gesuchten zahl durchsuchen.
Sofern dieser String vorhanden ist soll dieser einfach in der Ausgabe makiert werden. Aber halt nur genau die gesuchten Zeichen, nicht mehr und nicht weniger.

Was für weitere angaben könntest du gebrauchen um es mir besser erklären zu können

MfG Andre
 
motb hat doch schon alles nötige gesagt, oder?

Es versteht sich natürlich von selbst, dass eine enstprechende Style-Vorgabe für
span.hervorgehoben für die optische Hervorhebung sorgt.

Ich verwende ein ähnliches Verfahren (allerdings nicht mit PHP).

Übrigens kann es statt span auch eine beliebieges anderes HTML-Element sein.

vop
 
Ich seh das ähnlich, ich wüsste auch nicht 100% was hier gefragt ist.

"Übrigens kann es statt $text auch eine beliebiege andere Variable sein."

SCNR
 
Guten Morgen.
Also, das Verfahren mit str_replace funktioniert wunderbar.
Jedoch gibt es nur ein kleines Problem und dies wäre, dass die Strings nur hervorgehoben werden wenn gross und kleinschreibung richtig beachtet wird, wie kann ich das umgehen ohne hinterher den ganzen String in kleinschrift aufgeben zu müssen ?
 
Du könntest die Suchergebnisse auch unterschiedlich farbig hervorheben:
PHP:
<?php

	function foobar($searchterm, $searchterms)
	{
		if( !is_array($searchterms) || !in_array(strtolower($searchterm), array_map('strtolower', $searchterms)) ) {
			return false;
		}
		foreach( $searchterms as $key => $value ) {
			if( strtolower($searchterm) == strtolower($value) ) {
				break;
			}
		}
		return '<span class="highlight-'.($key%10).'">'.$searchterm.'</span>';
	}

	$searchterms = array(
		'Lorem',
		'Ipsum',
		'sit'
	);
	$string = 'Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Pellentesque vitae massa vel elit sodales ultricies. Nam sit amet justo. Vivamus arcu orci, cursus quis, tempus a, sollicitudin id, lectus. Donec egestas imperdiet elit. Nunc aliquam quam quis quam. Nunc lectus nunc, interdum sit amet, dictum sit amet, ultricies id, odio. Nunc mi. Sed metus sapien, tempus at, facilisis non, malesuada et, arcu. Cras id wisi. Vivamus nonummy varius mi. Praesent turpis magna, dapibus eu, accumsan ut, molestie sit amet, odio. Maecenas viverra hendrerit felis. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean sed est. Sed sodales sagittis eros. Morbi quis metus sit amet elit sagittis luctus. Quisque nisl. Vivamus id elit non risus euismod ultricies. Nunc ut leo. Pellentesque pharetra cursus sem.';

	echo preg_replace('/\b('.join('|', array_map('preg_quote', $searchterms)).')\b/ise', 'foobar("\\1", $searchterms)', $string);

?>
Zusätzlich müssen den Klassen noch Farben zugeordnet werden, beispielweise:
Code:
.highlight-0 { background-color:#FFF050; color:#000;}
.highlight-1 { background-color:#81D0F4; color:#000;}
.highlight-2 { background-color:#99FF99; color:#000;}
.highlight-3 { background-color:#EF979C; color:#000;}
.highlight-4 { background-color:#E85F9F; color:#fff;}
.highlight-5 { background-color:#C4563C; color:#fff;}
.highlight-6 { background-color:#4FAB24; color:#fff;}
.highlight-7 { background-color:#0068B4; color:#fff;}
.highlight-8 { background-color:#CFB100; color:#000;}
.highlight-9 { background-color:#940084; color:#fff;}
Übrigens entspricht die 10 des ($key%10)-Ausdrucks der Anzahl der Klassen.
 
ich will ja nicht unterschiedlich sondern einfach nur das auch kleine Zeichen mit reingenommen werden auch bei Eingabe von kleinen Zeichen
 
Zurück