php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2004-2

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 20.12.2004, 19:13  
Gast
 
Beiträge: n/a
Standard Problem bei preg_replace

Hallo,

Ich würde gerne eine Highlightfunktion, so wie bei Foren wie diesem, erstellen. So weit bin ich bisher:
Code:
function highlight($text) {
  if(isset($_GET['highlight'])) {
    $highlight = explode('+',trim(urlencode($_GET['highlight'])));
    for($i=0;$i < count($highlight);$i++) {
      $text = preg_replace("/".$highlight[$i]."/i","<span class=\"highlighted\">".$highlight[$i]."</span>",$text);
    }
  }
  return $text;
}
Mit str_replace war's vorher, aber da wurde Groß-/Kleinschreibung nicht berücksichtigt, und für str_ireplace ist meine PHP-Version zu niedrig

So, jetzt werden, wenn z.B. "teSt" eingegeben wurde, alle Wörter "gehighlighted", die z.B. "TEst", "test" oder "TEST" lauten. Allerdings wird ein Wort, welches vorher "tesT" war zu "teSt" umgeformt, da ja das das Highlight-Keywort war. Was kann ich dagegen tun?

Danke im voraus!

mfg
Jos
 
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 20.12.2004, 20:40  
Erfahrener Benutzer
 
Registriert seit: 21.07.2004
Beiträge: 377
juhuwoorps
Standard

http://www.php.net/manual/de/functio...ght-string.php
__________________
Und geht auch alles in die Binsen, immer heftig weiter grinsen!
juhuwoorps ist offline  
Alt 20.12.2004, 20:51  
Gast
 
Beiträge: n/a
Standard

Hallo,
danke für den Link!
Aber ich meinte eine Funktion zum Hervorheben eines Suchwortes. Da hab ich mich wohl missverständlich ausgedrückt

Beispiel:
http://www.phpfriend.de/forum/viewto...hlightfunktion

mfg
Jos
 
Alt 21.12.2004, 21:53  
Gast
 
Beiträge: n/a
Standard

Hallo,

Weiß denn keiner eine Lösung?
Ich weiß ja, wo der Fehler liegt (Gehighlightetes Wort wird durch das Suchwort ersetzt (Groß-, Keinschreibung falsch)), aber ich weiß nicht, wie ich ihn beheben kann

Ich habe auch schon das phpBB auseinander genommen und geguckt, wie es dort gemacht wird, aber nichts, für mich brauchbares gefunden, da ich den Code nicht ganz verstehe :wink:

mfg
Jos
 
Alt 21.12.2004, 22:37  
Erfahrener Benutzer
 
Registriert seit: 19.10.2004
Beiträge: 498
marsch
Standard

So vielleicht?
Code:
function highlight ($text) {
  if (isset ($_GET['highlight'])) {
    $highlight = explode ('+', trim (urlencode ($_GET['highlight'])));
    for ($i = 0; $i < count ($highlight); ++$i) {
      $pattern = sprintf ('/\b%s\b/i', $highlight[$i]);
      $replace = sprintf ('<span class="highlighted">%s</span>', $highlight[$i]);
      $text    = preg_replace($pattern, $replace, $text);
    }
  }
  return $text;
}
Ich habe immer noch keinen Plan, was Du denn "highlighten" willst...

EDIT: Jetzt hat's gefunkt...
Code:
$pattern = sprintf ('/\b(%s)\b/i', $highlight[$i]);
$replace = '<span class="highlighted">\\1</span>';
Du musst mit Rückwärtsreferenzen (back references) arbeiten. Der zu referenzierende Teil wird geklammert.

Ist ungetestet...
__________________
Cheers, Marco
marsch ist offline  
Alt 21.12.2004, 22:46  
Gast
 
Beiträge: n/a
Standard

Hallo,

Danke für die Antwort!
So hatte ich das auch schon, aber "//1" ist ja leer. Oder es wird zumindest nichts ersetzt

:wink:
mfg
Jos
 
Alt 21.12.2004, 22:50  
Erfahrener Benutzer
 
Registriert seit: 19.10.2004
Beiträge: 498
marsch
Standard

Klammern gesetzt? Wieso "//1", wenn's doch "\\1" sein sollte???
__________________
Cheers, Marco
marsch ist offline  
Alt 22.12.2004, 08:45  
Gast
 
Beiträge: n/a
Standard

Hallo,

Danke für die Antworten!
Die Klammern habe ich gesetzt, die "//" hatte ich nur hier falschherum geschrieben, sorry.

Es ist ja nur das Problem, dass das Wort zwar hervorgehoben wird, allerdings mit dem Suchwort ersetzt wird, bei dem ja nicht unbedingt die Groß-, Kleinschreibung stimmen muss.

Danke
Jos
 
 


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] Galerie Problem... coraplanet PHP Tipps 2008 4 06.06.2008 13:42
Sessions Problem StephenKing PHP Tipps 2008 3 16.10.2007 08:30
datensätze defekt oder problem mit dem einlesen? Ministry Datenbanken 4 06.07.2006 18:42
problem!!! PHP Tipps 2006 6 08.02.2006 11:06
[Erledigt] wieder ein Problem bei phpmailer und smtp PHP Tipps 2006 24 07.02.2006 01:07
[Erledigt] Problem bei Massenmails versenden mit der Funktion mail PHP-Fortgeschrittene 3 19.01.2005 13:36
[Erledigt] Problem mit Übergabe einer Klasse in PHP4 PHP-Fortgeschrittene 10 08.01.2005 21:00
Problem mit Weiterleitung PHP Tipps 2004-2 16 22.12.2004 17:49
Smarty und PHP-Skript Problem PHP Tipps 2004-2 2 03.12.2004 22:27
[Erledigt] PHP Upload (Master Value/Local Value Problem) PHP-Fortgeschrittene 5 23.11.2004 07:21
Problem mit alter JavaScript-Funktion woods PHP Tipps 2004 1 13.08.2004 13:34
[Erledigt] Problem mit Timestamp! PHP Tipps 2004 24 08.06.2004 19:51
Login Problem PHP Tipps 2004 4 04.06.2004 18:46
foreach problem mAy^daY PHP Tipps 2004 3 02.06.2004 20:29

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
preg_replace [wort|wort], preg_replace ohne groß, preg_replace highlight

Alle Zeitangaben in WEZ +2. Es ist jetzt 00:03 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

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.