Veröffentlicht 31. Januar 200718 j Hi, ich möchte eine Suchefunktion schreiben, bei der im Text die Suchwörter fett geschrieben werden. Bisher schaffe ich es nur die Wörter FETT zu schreiben wenn sie 1:1 mit dem Suchwort übereinsimmen: //Text aus der Datenbank, welcher über die Suchwörter gefunden wurde $info= stripslashes($A_Info); //Schleife mit Suchwörtern for($x=0; $x < count($suchArray); $x++) { //Suchwörter Fett schreiben $info= str_replace($suchArray[$x], '<b>'.$suchArray[$x].'</b>', $info); } [/PHP] Leider ist das Case Sensitiv, hat jemand nen besseren Vorschlag! Bin für alles Dankbar
31. Januar 200718 j gut wäre im threadtitel ein hinweis auf PHP ansonsten: str_ireplace -- Groß- und Kleinschreibungsunabhängige Version von str_replace(). PHP: str_ireplace - Manual
31. Januar 200718 j Mach eine Kopie von $info und $suchArray. Wandel $info und $suchArray in Großbuchstaben um. Gehe das Array durch und hole die Anfangs- und Endposition des in $info gefundenen Wortes und ersetze es durch das orginale Wort. Eigentlich ganze einfach, nur leider kann ich kein PHP.
1. Februar 200718 j Hi, ich möchte eine Suchefunktion schreiben, bei der im Text die Suchwörter fett geschrieben werden. Hatte Google sich das Prinzip nicht patentieren lassen? str_ireplace -- Groß- und Kleinschreibungsunabhängige Version von str_replace(). Das gibt es nur für PHP5. Aber wie wäre es mit preg_replace()? So ungefähr nach diesem Strickmuster: echo preg_replace($suchbegriff, "<strong>".$suchbegriff."</strong>", $text); Und weil es schon so spät ist, darf sich jemand anders Gedanken darüber machen, wie man den regulären Ausdruck so formuliert, daß er case-insensitive ist.
1. Februar 200718 j Aber wie wäre es mit preg_replace()? ... Und weil es schon so spät ist, darf sich jemand anders Gedanken darüber machen, wie man den regulären Ausdruck so formuliert, daß er case-insensitive ist. $strRes = preg_replace('/'.preg_quote($strSuchwort,'/').'/i','<strong>\\0</strong>',$strText); Ist allerdings ungetestet.
1. Februar 200718 j Hi solltest dir vllt genauer die php.net Einträge anschaun...bei vielen Funktionen, die nur unter >= PHP5 laufen, koennen Funktionen, mit gleicher "Aufgabe" interpretiert werden. So auch in diesesm BeispieL: if(!function_exists('str_ireplace')){ function str_ireplace($search, $replace, $subject){ if(is_array($search)){ array_walk($search, 'make_pattern'); } else{ $search = '/'.preg_quote($search, '/').'/i'; } return preg_replace($search, $replace, $subject); } } [/php] Wie gesagt... die preg_replace Funktion geinhaltet gleiche Aufgabe schon, was natuerlich einen Einsatz vorzieht. ´gruß
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.