Zum Inhalt springen

Suchen und Ersetzen in einem Text ohne Rücksicht auf Groß- und Kleinschreibung


Empfohlene Beiträge

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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? :P

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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ß

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...