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 24.11.2005, 08:32:04
DJS DJS ist offline
Anfänger
 
Registriert seit: Nov 2005
Ort: nähe Chemnitz
Alter: 42
Beiträge: 2
Hervorheben von Wörtern in Texten

Hallo, ich scheitere an folgendem Problem und hoffe, ihr könnt mir dabei weiterhelfen.
Zur Sache: Ich erhalte aus einer DB-Abfrage (Suchmaschine) viele Zeichenketten und größere Texte. Bei der Anzeige des Strings möchte ich das Suchwort hervorheben.
Sicher wurde das hier schon oft diskutiert, aber ich habe noch immer keine Lösung gefunden.
Ein einzelnes Wort hervorheben ist ja kein Problem, nur kann es vorkommen, dass es auch mehrere Suchbegriffe sein können. Ob das der Fall ist prüfe ich natürlich ab und falls ja, erzeuge ich ein Array.

Angenommen ich erhalte dann 2 Wörter, die ich in einem Text hervorheben möchte. Und zwar will ich das mit einem <span> machen:
PHP-Code:
<span class="highlight\" title=\"Ihre Suche nach ".$suchanfrage."\">".suchbegriff[0]."</span> 
...
<-- und da kommt das Problem:

Es kann dabei vorkommen (zumindest ist das bei mir aufgetreten), dass dass das Zweite Suchwort im ersten auch schon vorhanden ist...
Und jetzt will meine Hervorhebung sich selbst hervorheben und so weiter.
Noch schlimmer wird es, wenn einer der Suchbegriffe "span" ist: dann haut es
mir den ganzen HTML-Code durcheinander.

Mein Quelltext sieht so aus:

PHP-Code:
function Hervorheben($text){
// Suchbegriff teilen, falls mehrere Worte eingegeben wurden
    
$suche_nach=$_SESSION['cur_suchbegriff'];
    
$suche_nach=explode(",",$_SESSION['cur_suchbegriff']);
    
    if(
is_array($suche_nach)){
        for(
$i=0;$i<count($suche_nach);$i++){
            
$ret=preg_replace("/(^|[^\w]){1}(".trim($suche_nach[$i]).")($|[^\w]){1}/i","\\1<span class=\"info\" style=\"background-color: ".$cfg["grau_hell"]."; color: ".$cfg["schwarzgrau"].";\" title=\"Ihrere Suche nach ".$_SESSION['cur_suchbegriff']."\">\\2</span>\\3"$text);
        }
    }
    else{
        
$ret=preg_replace("/(^|[^\w]){1}(".trim($suche_nach[0]).")($|[^\w]){1}/i","\\1<span class=\"info\" style=\"background-color: ".$cfg["grau_hell"]."; color: ".$cfg["schwarzgrau"].";\" title=\"Ihre Suche nach ".$_SESSION['cur_suchbegriff']."\">\\2</span>\\3"$text);
    }
    
    return 
$ret;

Wichtig bei der Funktion soll sein, dass sie nicht Groß- und Kleinschreibung beachtet und dass es keine Hervorhebung in der Hervorgebung gibt bzw. dass eine Hervorhebung (Ersetzung) geschützt wird.

Also ich weis da nicht weiter. Ich habe schon so viel ausprobiert mit preg_replace und ereg_replace und so...
Aber hier komm ich nicht weiter. Anfänger bin ich auf keinen Fall mehr, nur ich begreife einfach nicht den blöden Syntax "/(^|[^\w]){1}[A-Z]|[0-9]" mit den Klammern und Zeichen... Wenn mir das mal jemand erklären könnte...

Wie gesagt, wenn mir hier jemand weiterhelfen kann und einen Lösungsvorschlag hat, dem wäre ich sehr dankbar!
Ich freue mich auf eure Ideen!

Gruß Ringo
__________________
[FONT=Tahoma]Wir sind Sentra[/FONT]

Geändert von DJS (24.11.2005 um 08:38:22 Uhr)
Mit Zitat antworten
  #2  
Alt 06.12.2005, 15:16:24
DJS DJS ist offline
Anfänger
 
Registriert seit: Nov 2005
Ort: nähe Chemnitz
Alter: 42
Beiträge: 2
AW: Hervorheben von Wörtern in Texten

Hier mein eigener Lösungsvorschlag:
Kann mehrere Worte hervorheben, unterscheidet nicht Groß- und Kleinschreibung und hebt sich nicht selbst hervor...

PHP-Code:
function HighlightText($text,$needle,$keep=false){
    include 
"daten/inc/config.inc.php";
    
    
$ret=$text;
    
$suche_nach=$needle;
    
    
// Suchbegriff teilen, falls mehrere Worte eingegeben wurden
    // Nicht teilen, wenn der Zusammenhang erzwungen werden soll
    
if(!$keep){
        
$suche_nach=preg_replace("/ , /",",",$suche_nach);
        
$suche_nach=preg_replace("/, /",",",$suche_nach);
        
$suche_nach=preg_replace("/ ,/",",",$suche_nach);
        
$suche_nach=explode(",",$suche_nach);
        
        if(
is_array($suche_nach)){
            
$str="";
            for(
$i=0;$i<count($suche_nach);$i++){
                if(
$i>0){ $str.="|"; }
                
$str.=trim($suche_nach[$i]);
            }
            
$ret=preg_replace("/(^|[^\w]|[^\n]){1}(".$str.")($|[^\w]|[^\n]){1}/smi","\\1<span class=\"info\" style=\"background-color: ".$cfg["grau_hell"]."; color: ".$cfg["schwarz"]."; text-decoration: underline;\" title=\"Ergebnis Ihrer Suche\">\\2</span>\\3"$ret);
        }
    }
    else{
        
$ret=preg_replace("/(^|[^\w]|[^\n]){1}(".$suche_nach.")($|[^\w]|[^\n]){1}/smi","\\1<span class=\"info\" style=\"background-color: ".$cfg["grau_hell"]."; color: ".$cfg["schwarz"]."; text-decoration: underline;\" title=\"Ergebnis Ihrer Suche\">\\2</span>\\3"$ret);
    }
    return 
$ret;

__________________
[FONT=Tahoma]Wir sind Sentra[/FONT]
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
Links hervorheben DelphiDell PHP Grundlagen 4 09.06.2005 01:28:00
Zeilenumbruch von dynamischen Texten in einer Tabelle(TD)erzwingen c.brandau PHP für Fortgeschrittene und Experten 15 29.05.2005 18:25:42
Ersten Buchstarben Farbig Hervorheben CrAnE PHP Grundlagen 7 03.04.2004 21:44:48
Abscheiden von Texten Raik PHP Grundlagen 3 14.01.2004 13:10:02
Umwandlung von Texten in ... Code Skyman PHP Grundlagen 2 22.08.2003 19:38:14


Alle Zeitangaben in WEZ +2. Es ist jetzt 07:23:59 Uhr.


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


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