Problem mit meiner Suchfunktion, Links werden bei den Treffern verändert

tantetoni2

Grünschnabel
Hallo Leute ich habe ein kleines Problem

undzwar gehts darum ich habe mir ne Suchfunktion gebastelt wo die Treffer farblich markiert werden jetzt mein Problem

ich mache mal ein Beispiel

hier erstmal die Funktion zum markieren
PHP:
function highlight_str($post,$str) { 
  if($str != "" and $post != ""){ 
      $str = split(" ",$str); 
           foreach($str as $search_str) { 
         $post = eregi_replace("$search_str","<strong><font style='background-color: yellow' color=black>\\0</font></strong>",$post); 
      } 
    } 
   return $post; 
}

jetzt habe ich zB. ein Link (werden aus bb-codes formatiert) in dem Treffer sagen wir mal er heist [linktag]http://www.zerflueckterlink.de[/linktag]

wenn ich jetzt nach dem Wort link suche:

PHP:
highlight_str("[linktag]http://www.zerflueckterlink.de[/linktag] 
","link");

zerpflückt er mir den bbcode tag und auch den Link, ist es möglich das man bestimmte tags und deren inhalt ignorieren kann

bitte keine Links zu irgendwelchen Parser Klassen, ich habe meine eigene und will die auch behalten, im phpforum sinkt die Kompetenz leider immer mehr daher frage ich hier nach Hilfe
 
Probier mal Folgendes:
PHP:
$post = preg_replace('/(^|\][^\[]*)('.preg_quote($search_str, '/').')/i', '\\1<strong style="color:black; background-color:yellow">\\2</strong>', $post);
 
PHP:
function highlight_str($post,$str) { 
  if($str != "" and $post != ""){ 
      $str = split(" ",$str); 
           foreach($str as $search_str) { 
         $post = preg_replace('/(^|\][^\[]*)('.preg_quote($search_str, '/').')/i', '\\1<strong style="color:black; background-color:yellow">\\2</strong>', $post); 
      } 
    } 
   return $post;  
   }
   
echo highlight_str("[linktag]http://www.zerflueckterlink.de[/linktag]","link");
Ausgabe:
schnipsel.jpg
Was genau soll anders sein?
 
er rest hinter dem .de sollte auch nicht geändert werden

hier als Beispiel

PHP:
function highlight_str($post,$str) {  
  if($str != "" and $post != ""){  
      $str = split(" ",$str);  
           foreach($str as $search_str) {  
         $post = preg_replace('/(^|\][^\[]*)('.preg_quote($search_str, '/').')/i', '\\1<strong style="color:black; background-color:yellow">\\2</strong>', $post);  
      }  
    }  
   return $post;   
   } 
    
echo highlight_str("[linktag]http://www.host.tb-world.de/userpics/tantetoni2/tantetoni265401523501213720045.gif
[/linktag]","tantetoni2");

der verändert den Bild Name so das der Link nicht mehr gültig ist
 
sagen wir es mal so er soll die bbcode tags und deren Inhalt ignorieren also sagen wir mal es ist ein [linktag] in dem String drin der durchsucht werden soll er diesen überspringen und erst an den Text weiter machen der nach dem bbcode tag kommt

Beispiel

PHP:
echo highlight_str("hallo wie gehts euch ich bin tantetoni2 [linktag]http://www.host.tb-world.de/userpics/tantetoni2/tantetoni265401523501213720045.gif 
[/linktag] mfg tantetoni2","tantetoni2");
diese Stück im dem String soll er außer acht lassen
>>> [linktag]http://www.host.tb-world.de/userpics/tantetoni2/tantetoni265401523501213720045.gif [/linktag] <<<<
 
bin fündig geworden

so siehts jetzt aus und t super dazu ist zu sagen das die bbcodes vorher formatiert werden müssen

PHP:
function highlight_str($post,$str) {
  if($str != ""  and $post != ""){
      $str = split(" ",$str);
     
        foreach($str as $search_str) {
 
           $post = preg_replace("/((<[^>]*)|$search_str)/ie", '"\2"=="\1"? "\1":"<strong style=\"color:black; background-color: yellow\">\1</strong>"', $post);
  
        }
     return $post;
   }

}

danke trotzdem für Lösungs versuche
 
Zuletzt bearbeitet:
Zurück