Portal > Foren > PHP > PHP-Programmierung > Highlight Problem
Antwort
 
Themen-Optionen Thema durchsuchen
Alt 16.02.2007, 16:57 Nach oben    #1
Neuer Benutzer
 
Registriert seit: 03.11.2005
Ort: Krefeld
Beiträge: 12
Standard Highlight Problem

Hallo zuasmmen,

um einen Text hervorzuheben bietet es sich ja logischerweise an das suchmuster mit ergänzungen an dem suchmuster zu erstezten.

kleine verständnisfrage:
ist ereg_replace case sensitive??? str_replace ist es doch, oder nicht???

Also das Problem ist, das es wie es scheint wirklich casesenstiv ist, es werden nciht alle suchmuster hervorgehoben, weil diese groß oder ggf klein geschrieben sind.

ist mein denkansatz verkehrt ???
Gibt es eine andere Funktion die mir mein vorhaben ermöglicht?

auf php.net habe ich folgendes gefunden.

PHP-Code:
function highlight($word$subject) {
    
$regex_chars '\.+?(){}[]^$';
    for (
$i=0$i<strlen($regex_chars); $i++) {
        
$char substr($regex_chars$i1);
        
$word str_replace($char'\\'.$char$word);
    }
    
$word '(.*)('.$word.')(.*)';
    return 
eregi_replace($word'\1<span class="highlight">\2</span>\3'$subject);

komischer weise wählt diese funktion wahlweise suchergebnisse aus, also mal wird das suchmuster hervorgehoben und mal nciht .... komisch

hier folgt mein versuch, simpel, aber es funktioniert bis auf mein beschriebenes problem
PHP-Code:
function HighlightWords($PartToCheck,$PartToFind){
    return 
ereg_replace($PartToFind"<span class='highlight'>$PartToFind</span>"$PartToCheck);

schon einemal vorab herzlichen dank und helau ^^
__________________
Es gibt 10 Wege Binärcode zu verstehen. Ganz oder garnicht
web2 ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 16.02.2007, 17:35 Nach oben    #2
Christian Mühlroth
 
Benutzerbild von Chr!s
 
Registriert seit: 04.09.2005
Ort: Nürnberg
Beiträge: 561
Standard

Erstmal gilt es zwischen eregi und ereg_replace zu unterschieden.
Die erste Version ist Case-insensitive, die zweite nicht.
Die ereg_* Fukntionen sint allerdings veraltet. Nutze die preg_* oder str_replace Funktionen.
__________________
http://www.ChrisDiary.De
Chr!s ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 15.05.2007, 23:28 Nach oben    #3
Erfahrener Benutzer
 
Benutzerbild von Bleistift
 
Registriert seit: 31.12.2006
Ort: Zürich
Beiträge: 306
Standard

Ich hab eine Frage, die indirekt hier hin passt
Meine Funktion:
PHP-Code:
function smarty_modifier_highlight($post$keywords)
{
    if(
strstr($keywords' ') !== false) {
        
$keywords explode(' '$keywords);
    } else {
        
$keywords = array($keywords);
    }
    foreach(
$keywords AS $keyword) {
        
$post =  preg_replace('#(' $keyword ')#i''<b>\\1</b>'$post);
    }
    return 
$post;

Nun gibt es aber manchmal Überschneidungen der <b>-Tags. Beispiel: Suche nach "Mehrere Seiten e". Ergebnis:
Zitat:
<b>M<b>e</b>hr<b>e</b>r<b>e</b></b> <b>S<b>e</b>it<b>e</b>n</b> <b>e</b>ntf<b>e</b>rn<b>e</b>n
Die Überschneidungen machen hier ja wenig Sinn und ich möchte dies verhindern. Ich habe sicher eine Stunde lang am regulären Ausdruck gespielt aber kriegte es nicht raus... Hat jemand eine Idee?
__________________
. <-- This is Punkt. Copy Punkt into your signature to help him on his way to world domination.
Bleistift ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 16.05.2007, 00:11 Nach oben    #4
Johannes Müller
 
Benutzerbild von $traight-$hoota
 
Registriert seit: 15.09.2005
Ort: Königreich Flieden
Beiträge: 551
Standard

du könntest gefundene und schon hervorgehobene stellen irgendwie maskieren oder ausschneiden und hinterher wieder demaskieren bzw. einfügen.
nur so als denkansatz...
__________________
Weißt Bescheid - Scheiß wie weit
$traight-$hoota ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 16.05.2007, 10:51 Nach oben    #5
Daniel Golowin
 
Registriert seit: 17.11.2005
Ort: Rheinland-Pfalz, Osthofen
Beiträge: 122
Standard

Stichwort "Recursive Pattern" könnte dir helfen.

Hier ist ein Beispiel für BBCode:
http://www.php.net/manual/en/functio....php#id6017451

Die Rekursion in der Funktion lässt du einfach weg.


Aber was ist eigentlich das gewünschte Ergebnis, bzw. welche Schlüsselwörter verwendest du?

Geändert von dago (16.05.2007 um 11:03 Uhr)
dago ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 25.05.2007, 14:20 Nach oben    #6
Ben
Benjamin Klaile
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.516
Standard

Bist du weitergekommen bzw. brauchst du noch Unterstützung?
Ben ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche

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 sind an
PingBacks sind an
RefBacks sind aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Problem E-Mails zu senden Jann Hendrik Plauderecke 7 25.05.2007 21:37
Problem bei Namensauflösung flupsi PHP-Programmierung 15 31.08.2006 18:42
Logisches Problem beim einsatz von Ereignissen Prophet Allgemeine Java-Programmierung 19 05.06.2006 22:08
Problem mit Cookie und Reloads... Bookworm PHP-Programmierung 10 13.04.2006 12:09
OSX + Eclipse 3.1 Problem bacarni Eclipse 3 29.07.2005 21:19


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:21 Uhr.


Powered by vBulletin® Version 3.7.4 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45