php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2009

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 30.11.2009, 12:11  
Neuer Benutzer
 
Registriert seit: 21.07.2009
Beiträge: 23
PHP-Kenntnisse:
Anfänger
Chili-Schaf befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] preg_replace und Case-Insensitivität

Hallöchen,

ich hab ein kleines Problem mit preg_replace. Und zwar habe ich eine kleine Suchfunktion programmiert die incasesensitiv sucht. Jetzt möchte ich in dem Ergebnisstring das Suchwort hervorheben, z.B.
Suchtext: In dem Irrgarten wird innen beleuchtet.
Suchwort: in

Ergebnis: In dem Irrgarten BRIN wird innen beleuchtet.

Ich benutze php4 und greife deswegen beim Suchen und Ersetzen auf diese Funktion zu:

PHP-Code:
$result preg_replace("#(.*)".$search_key."(.*)$#is""$1<b>".$search_key."</b>$2"$result); 
So, finden und ersetzen tut preg_replace zwar, blöderweise ersetzt er überall "in" , so dass das Ergebnis dann so aussieht:

Ergebnis: in dem Irrgarten BRin wird innen beleuchtet.

Und das möchte ich ja nicht.
Hat jemand eine Idee wie ich das gewünschte Ergebnis erreichen kann?
Chili-Schaf ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 30.11.2009, 12:16  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.032
lazydog befindet sich auf einem aufstrebenden Ast
Standard

Warum benutzt du nicht für den Suchbegriff ebenfalls das Backtracking?
PHP-Code:
$result preg_replace("#(.*)($search_key)(.*)$#is""$1<b>$2</b>$3"$result); 
__________________
Gruss
L
lazydog ist offline  
Alt 30.11.2009, 14:05  
Erfahrener Benutzer
 
Registriert seit: 05.02.2009
Beiträge: 1.401
PHP-Kenntnisse:
Fortgeschritten
Destruction ist zur Zeit noch ein unbeschriebenes Blatt
Standard

PHP-Code:
$result preg_replace("#(.*)\b($search_key)\b(.*)$#is""$1<b>$2</b>$3"$result); 
Evtl. so?
__________________
"Dummheit redet viel..Klugheit denkt und schweigt.." [Amgervinus]
Destruction ist offline  
Alt 30.11.2009, 14:11  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.032
lazydog befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Destruction Beitrag anzeigen
Evtl. so?
Das hab ich ja vor zwei Stunden schon gesagt
__________________
Gruss
L
lazydog ist offline  
Alt 30.11.2009, 14:13  
Erfahrener Benutzer
 
Registriert seit: 05.02.2009
Beiträge: 1.401
PHP-Kenntnisse:
Fortgeschritten
Destruction ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Zitat von lazydog Beitrag anzeigen
Das hab ich ja vor zwei Stunden schon gesagt
Nö... "\b" fehlt bei dir. Und ich glaube darum gings ihm!
Dass er nicht die Wörter findet in denen es vorkommt, sondern nur das selbe Wort!

Sorry falls ich das falsch verstanden habe, aber du hast dein eigentliches Problem auch nicht wirklich gut beschrieben. Hättest mal sagen sollen WAS du denn erwartest von deinem Code.

Ich glaube aber sowieso dass in deinem Fall str_replace eigtl. reichen würde

Grüße
cu
Destruction
__________________
"Dummheit redet viel..Klugheit denkt und schweigt.." [Amgervinus]
Destruction ist offline  
Alt 30.11.2009, 14:15  
Erfahrener Benutzer
 
Registriert seit: 26.10.2009
Beiträge: 425
PHP-Kenntnisse:
Fortgeschritten
Yoshi- befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von lazydog Beitrag anzeigen
Das hab ich ja vor zwei Stunden schon gesagt
Deins wird vermutlich nicht gehen.
Und bei destruction sind die (.*?) überflüßig.
Yoshi- ist offline  
Alt 30.11.2009, 14:17  
Erfahrener Benutzer
 
Registriert seit: 05.02.2009
Beiträge: 1.401
PHP-Kenntnisse:
Fortgeschritten
Destruction ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Zitat von Yoshi- Beitrag anzeigen
Deins wird vermutlich nicht gehen.
Und bei destruction sind die (.*?) überflüßig.
Siehe oben:

Zitat:
Ich glaube aber sowieso dass in deinem Fall str_replace eigtl. reichen würde
DIe (.*) habe ich aus seinem Post einfach entnommen.
__________________
"Dummheit redet viel..Klugheit denkt und schweigt.." [Amgervinus]
Destruction ist offline  
Alt 30.11.2009, 14:29  
Neuer Benutzer
 
Registriert seit: 21.07.2009
Beiträge: 23
PHP-Kenntnisse:
Anfänger
Chili-Schaf befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Destruction Beitrag anzeigen
Nö... "\b" fehlt bei dir. Und ich glaube darum gings ihm!
*räusper* ihr statt ihm
Zitat:
Zitat von Destruction Beitrag anzeigen
Dass er nicht die Wörter findet in denen es vorkommt, sondern nur das selbe Wort!

Sorry falls ich das falsch verstanden habe, aber du hast dein eigentliches Problem auch nicht wirklich gut beschrieben. Hättest mal sagen sollen WAS du denn erwartest von deinem Code.

Ich glaube aber sowieso dass in deinem Fall str_replace eigtl. reichen würde

Grüße
cu
Destruction
Also, ich möchte in einem String eine Zeichenkette suchen und diese dann hervorheben indem ich sie fett darstelle und das am liebsten case-insensitiv. str_replace würde bei dem Suchwort "In" nicht die Begriffe "innerhalb" oder "drinnen" bemerken und somit könnte ich die "in's" dort nicht hervorheben.

Ein Beispiel:
Zu durchsuchender Satz: "Immer geht der Imker im Dunkeln zu Mimi"
hebe "im" hervor: "Immer geht der Imker im Dunkeln zu Mimi"

Mit meiner Funktion ganz oben hebt er zwar alle "im's" hervor, aber er schreibt sie dann alle klein, er soll aber die gefundenen Zeichenketten nur hervorheben und nicht ersetzten...konnte ich es diesmal besser erklären?
Chili-Schaf ist offline  
Alt 30.11.2009, 14:34  
Erfahrener Benutzer
 
Registriert seit: 26.10.2009
Beiträge: 425
PHP-Kenntnisse:
Fortgeschritten
Yoshi- befindet sich auf einem aufstrebenden Ast
Standard

PHP-Code:
$blub preg_replace('°('.preg_quote($search_key'°').')°si'"<b>$1</b>"$blub); 
Yoshi- ist offline  
Alt 30.11.2009, 14:42  
Erfahrener Benutzer
 
Registriert seit: 05.02.2009
Beiträge: 1.401
PHP-Kenntnisse:
Fortgeschritten
Destruction ist zur Zeit noch ein unbeschriebenes Blatt
Standard

PHP-Code:
$result preg_replace("#($search_key)#is""<b>$1</b>"$result); 
Das sollte glaube ich eigtl. reichen
__________________
"Dummheit redet viel..Klugheit denkt und schweigt.." [Amgervinus]
Destruction ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] $_GET und CASE tkaufmann PHP Tipps 2009 3 10.11.2009 20:20
[Erledigt] MySQL CASE liefert immer NULL zurück christophM Datenbanken 2 29.08.2009 16:55
[Erledigt] Datumsformat IMAP -&gt; MySQL umwandeln - wie? Namevac PHP Tipps 2009 5 05.05.2009 13:36
Bilder an bestimmten Tagen anzeigen Eclipse16V PHP Tipps 2009 12 15.04.2009 15:28
[Erledigt] Transparente Runde Ecken bei Thumbnial realisieren tomtaz PHP Tipps 2008 3 08.07.2008 01:20
switch case frage skaterboy PHP Tipps 2006 8 11.04.2006 14:30
Case optimieren? c-f-g PHP Tipps 2005-2 9 11.10.2005 12:33
Switch / Case + while krummzahn PHP Tipps 2005-2 16 05.06.2005 10:46
Switch - Case krummzahn PHP Tipps 2005 12 03.06.2005 13:28
Case - mehrere Lösungen in einer Tabelle. PHP Tipps 2005 4 28.04.2005 10:24
switch case und inlcude problem PHP Tipps 2005 12 01.03.2005 09:55
case... stefan-miti PHP Tipps 2005 14 09.02.2005 09:21
Abstatz mit MultiCell Fpdf PHP Tipps 2005 4 12.01.2005 14:09
Switch case mit Vergleichsoperatoren PHP Tipps 2004 15 03.11.2004 16:31
Switch / Case Problem PHP Tipps 2004 9 28.10.2004 11:18

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
preg_replace php, php suchtext hervorheben, preg_replace, preg_replace si suchbegriff hervorheben, suchtext hervorheben php, php preg replace suchwort markieren, preg_replace hervorheben, php suchtext markieren, php suchwort hervorheben, switch \preg_replace\, switch case str_replace php, preg_replace backtracking, eregi_replace alles klein, php preg_replace suchfunktion, insensitivität

Alle Zeitangaben in WEZ +2. Es ist jetzt 20:46 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum