SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Websites optimieren für Google & Co.

Websites optimieren für Google & Co. zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > PHP für Fortgeschrittene und Experten
Hilfe Community Kalender Heutige Beiträge Suchen

PHP für Fortgeschrittene und Experten Fortgeschrittene und Experten können hier über ihre Probleme und Bedenken talken

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 26.01.2006, 11:13:24
alexboy alexboy ist offline
Anfänger
 
Registriert seit: Dec 2005
Beiträge: 34
regex highlight problem

hi, ich habe eine volltextsuche über alle meine artikel gelegt. in diesen artikel kann auch html code vorkommen (ist halt leider so...). eingentlich ja kein problem.
zusätzlich wollte ich noch highlighten (also die treffer einfärben) und da macht mir der html code jetzt schwer zu schaffen. denn wenn man nach wortfetzen sucht, die auch im code vorkommen können (links, bilder etc) dann wird der html code durch den highlightcode natürlich voll zerstört.

meine frage: kann mir jemand die regex so umbauen, dass ausschliesslich textteile gefunden werden, die nicht innerhalb von < > tags stehen?
bitte, brauche da dringend hilfe.

mein hihglight herzstück:

$pattern= array("/( ".$tmp.")/i","/(".$tmp." )/i");
$ersetzen=" <span class=\"highlight\">\\1</span> ";
$eingabe = preg_replace($pattern, $ersetzen, $eingabe);

im netz habe ich diesen vorschlag gefunden:
$pattern= "/>[^<]*($tmp)[^<]*<[^>]/i";

funkt aber nicht richtig...

danke für jede hilfe.
alex

Geändert von alexboy (26.01.2006 um 11:31:57 Uhr)
Mit Zitat antworten
  #2  
Alt 03.02.2006, 12:49:43
Benutzerbild von Nev
Nev Nev ist offline
Member
 
Registriert seit: Feb 2002
Ort: Österreich / Wien
Alter: 44
Beiträge: 992
AW: regex highlight problem

Hi Alexboy

der Code wird dir weiterhelfen:
Code:
			IF (FALSE == PREG_MATCH('/<.+>/', $TPL_CONTENT['CONTENT'])) {
				$TPL_CONTENT['CONTENT'] = PREG_REPLACE('/(\b'.$term.'\b)/i', '<span class="hilite">$1</span>', $TPL_CONTENT['CONTENT']);
			} ELSE {
				$TPL_CONTENT['CONTENT'] = PREG_REPLACE('/(?<=>)([^<]+)?(\b'.$term.'\b)/i', '$1<span class="hilite">$2</span>', $TPL_CONTENT['CONTENT']);
			}
\b is in diesem Bereich vielleicht ned so wichtig gibt an ob nur ganze Wörter highlighted
__________________
Cu
Nev the XxX (Sven-Marcus Maderbacher)

Master of www.Burnworld.de
www.Nev-hilft.de die Seite für den Coder
Mit Zitat antworten
  #3  
Alt 03.02.2006, 13:20:47
alexboy alexboy ist offline
Anfänger
 
Registriert seit: Dec 2005
Beiträge: 34
für alle die sowas mal brauchen

hab es eigentlich ganz anders gelöst.

1) merke mir alle tags
2) ersetze alle tags durch die reihenfolge ihres auftretens und einen kürzel
3) highlighte nun den text (hier mit einer class)
4) ersetze nun die platzhalter von schritt 2 wieder durch die originalen tags

funktioniert einwandfrei!

codebeispiel:

PHP-Code:
function highlight($text$highlight){

        
//TAGS SUCHEN
        
$pattern "/<[^<>]*>/i";
        
preg_match_all($pattern$text$found);
        
        
//PSEUDOERSETZEN
        
foreach($found[0] as $key => $value){
            
$text preg_replace ($pattern,"§".$key."§"$text,1); 
        }

        
$highlightarray explode(" ",$highlight);
        foreach(
$highlightarray as $tmp){        
            
//HIGHLIGHT
            
$pattern= array("/(".$tmp.")/i");
            
$ersetzen="<span class=\"highlight\">\\1</span>";
            
$text preg_replace($pattern$ersetzen$text);
        }
        
        
//PSEUDOERSETZEN RETOUR
        
foreach($found[0] as $key => $value){
            
$pattern "/§".$key."§/i";
            
$text preg_replace ($pattern,$value$text,1); 
        }
    return 
$text;

Mit Zitat antworten
  #4  
Alt 03.02.2006, 13:34:43
Benutzerbild von Nev
Nev Nev ist offline
Member
 
Registriert seit: Feb 2002
Ort: Österreich / Wien
Alter: 44
Beiträge: 992
AW: regex highlight problem

das is auch eine Variante

Hast du schon mal das Highlithing bei diesem Text probiert??

Code:
<Dies ist ein Beispiels Text >
bzw.
Code:
Der Tag eines Textareas schaut folgendermassen aus
< textarea ></ textarea >
die Browser interpretierung so:
<textarea></textarea>
Ich hab nur kurz über den Code geschaut, aber es scheint sich genau bei diesen Beispielen ein falsches Ergebnis zu erzeugen.

Kann mich auch irren.
__________________
Cu
Nev the XxX (Sven-Marcus Maderbacher)

Master of www.Burnworld.de
www.Nev-hilft.de die Seite für den Coder
Mit Zitat antworten
  #5  
Alt 03.02.2006, 13:40:24
alexboy alexboy ist offline
Anfänger
 
Registriert seit: Dec 2005
Beiträge: 34
AW: regex highlight problem

nein, passiert nicht. den diese tags sind ja beim highlighten schon durch preudocodes ersetzt worden... ausser meine regex stimmt nicht :-)

/<[^<>]*>/i

wenn jemand eine verbesserung weiss, dann bitte nur her damit :-)
diese regex sollte alles zwischen <und> finden...

Geändert von alexboy (03.02.2006 um 13:42:11 Uhr)
Mit Zitat antworten
  #6  
Alt 03.02.2006, 15:37:43
tonitone tonitone ist offline
Anfänger
 
Registriert seit: Jan 2002
Alter: 49
Beiträge: 41
AW: regex highlight problem

schau mal hier, gibts schon eine fertige lösung aus einem html-code, nur den text sichtbar zu machen:
http://de.php.net/manual/de/function....php#AEN119674

hoffe es hilft
__________________
+++

ToniTone

+++

geht nicht - gibts nicht
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

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

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Problem mit RegEx 2 c4 PHP für Fortgeschrittene und Experten 10 10.10.2005 19:12:37
Problem mit RegEx c4 PHP für Fortgeschrittene und Experten 2 05.10.2005 10:06:01
regex Problem morsche PHP für Fortgeschrittene und Experten 10 19.01.2005 15:29:41
regex Problem theripper8472 PHP für Fortgeschrittene und Experten 5 23.10.2004 09:38:28
regex problem - und/nicht |Coding PHP für Fortgeschrittene und Experten 2 01.08.2003 14:03:59


Alle Zeitangaben in WEZ +2. Es ist jetzt 19:14:32 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt