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
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
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.
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.
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.
`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ß
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden