Funktion zum Suchbegriffe hervorheben

sd12

Legendäres Mitglied
Hallo @all

Hab mir eine funktion zu hervorheben von Begriffen ergoglet:
CODE function highlight_results($text, $query, $bg="#FFFF00", $split="+") {
// Die Suchwörter sind im $query durch $split verbunden
// Bsp.: hallo+du+php-coder
$results = explode($split, $query);
foreach($results as $result) {
$to = "<span style=\"background-color: ".$bg."\"><b>";
$to.= $result."</span></b>";
$text = str_replace($result, $to, $text);
}
return $text;
}


Diese funktioniert auch, nur das Problem ist, das zwischen Gross- kleinschreibung unterschieden wird. WEnn nach hallo gesucht wird, soll auch Hallo hervorgehoben werden...

Wer hat mir einen Tipp?
 
Hallo,

CODE function highlight_results($text, $query, $bg="#FFFF00", $split="+") {
// Die Suchwörter sind im $query durch $split verbunden
// Bsp.: hallo+du+php-coder
$results = explode($split, $query);
foreach( $results as $result ) {
$text = preg_replace('/([^öäüß\w\d])(' . preg_quote($result, '/') . ')([^öäüß\w\d])/i', '\1<span style="background-color: ' . $bg . ';"><b>\2</b></span>\3', $text);
}
return $text;
}


so sollte es gehen, mit str_replace wird das nicht so einfach funktionieren. Ich habe das ganze jedoch nicht getestet, was unabdinglich ist, wenn mit Regulären Ausdrücken gearbeitet wird.
Reguläre Ausdrücke sind verdammt wichtig, damit kann man(n/frau) so einiges mit anfangen.

Mehr dazu findest Du auf und in den Benutzerkommentaren: PHP: CXXII. Reguläre Ausdrücke Funktionen (Perl-kompatibel).

Die Funktion muss aber anscheindet noch erweitert werden, da sie nicht alle Varianten innerhalb einer URL und den möglichen Suchmustern einer Suchmaschine behandelt.



MfG Sascha Ahlers
 
alternativ ginge es schon mit str_replace und zwar mit dessen case-insenstiven variante

CODE str_ireplace(...)


bei komplexeren Pattern, sollte man natürlich regex den vorzug geben

lg waquner
 
QUOTE (waquner @ Mi 16.11.2005, 14:20) alternativ ginge es schon mit str_replace und zwar mit dessen case-insenstiven variante


CODE str_ireplace(...)

[...]

Oh, das gibt es nun auch seit PHP 5. Na ja, dabei muss man dann voraussetzen, dass PHP 5 verwendet werden kann und auch verwendet wird.



MfG Sascha Ahlers
 
QUOTE (waquner @ Mi 16.11.2005, 14:20) alternativ ginge es schon mit str_replace und zwar mit dessen case-insenstiven variante


CODE str_ireplace(...)


bei komplexeren Pattern, sollte man natürlich regex den vorzug geben

lg waquner

Danke, das war mir bekannt, jedoch habe ich nicht php5 :-(
 
QUOTE (waquner @ Do 17.11.2005, 10:22) sry mein fehler:)

Aber Hallo....

Ich will doch niemanden einschüchtern.

Konntest du doch nicht wissen, das ich das schon versucht habe, bzw. php 4 habe.
 
hast du nicht:) aber ich muss zugebn ich hab gar ned drauf geachtet das es ireplace erst ab php5 gibt:)
 
Zurück
Oben