Weekend_Warrior Geschrieben 31. Januar 2007 Geschrieben 31. Januar 2007 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 Zitieren
dennisderweber Geschrieben 31. Januar 2007 Geschrieben 31. Januar 2007 gut wäre im threadtitel ein hinweis auf PHP ansonsten: str_ireplace -- Groß- und Kleinschreibungsunabhängige Version von str_replace(). PHP: str_ireplace - Manual Zitieren
tobbe Geschrieben 31. Januar 2007 Geschrieben 31. Januar 2007 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. Zitieren
Mascha Geschrieben 1. Februar 2007 Geschrieben 1. Februar 2007 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. Zitieren
Monty82 Geschrieben 1. Februar 2007 Geschrieben 1. Februar 2007 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. Zitieren
`kiko Geschrieben 1. Februar 2007 Geschrieben 1. Februar 2007 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ß Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.