If else Anweisung in preg_replace
    
thomas
    
    
      
    
  - php
- 0 Frank (no reg)
- 0 Blubb
- 0 Sesca
 nicht angemeldet
 nicht angemeldetGuten Abend
Ich versuche verzweifelt mit folgendem Code meine Twitter-Timeline formatiert auf meiner Seite auszugeben:
$json_text = preg_replace("!(^|[^\"=]{1})(\#|@)([^\s<>]+)([\s\n<>]|$)!sme", "'\\1<a href=\"" . (('\\2' == "#") ? "http://search.twitter.com/search?q=\\3" : "http://twitter.com/#!/\\3") . "\" target=\"_blank\">\\2\\3</a>\\4'", $json[$i]->{'text'});  
Mein Ziel ist es, bei einem # einen anderen Link zu generieren als bei einem @.
Vielen Dank, Tom
Hi, dann führe 2 mal preg_replace aus, einmal mit dem einen Pattern und einmal mit dem anderen. Beide zugleich dürften ja nicht zutreffen?
Gruss, Frank
Hallo,
$json_text = preg_replace("!(^|[^"=]{1})(#|@)([^\s<>]+)([\s\n<>]|$)!sme", "'\1<a href="" . (('\2' == "#") ? "http://search.twitter.com/search?q=\3" : "http://twitter.com/#!/\3") . "" target="_blank">\2\3</a>\4'", $json[$i]->{'text'});
Du hast dort mindestens einen Kontextwechsel, wenn du den String des "$replacement" verkettest, den du nicht beachtest. Ansonsten kann ich [conditional subpatterns](http://www.php.net/manual/de/regexp.reference.conditional.php) empfehlen.  
  
Grüße  
Guten Abend
Ich versuche verzweifelt mit folgendem Code meine Twitter-Timeline formatiert auf meiner Seite auszugeben:
$json_text = preg_replace("!(^|[^"=]{1})(#|@)([^\s<>]+)([\s\n<>]|$)!sme", "'\1<a href="" . (('\2' == "#") ? "http://search.twitter.com/search?q=\3" : "http://twitter.com/#!/\3") . "" target="_blank">\2\3</a>\4'", $json[$i]->{'text'});
>   
> Mein Ziel ist es, bei einem # einen anderen Link zu generieren als bei einem @.  
>   
> Vielen Dank, Tom  
  
Versuchs mal mit einem bedingten Unterausdruck:  
http://regexp-evaluator.de/tutorial/bedingte-unterausdruecke/  
  
Alternativ kannst du auch arrays verwenden:  
  
$text = "Ich bin ein link der ersten Kategorie : regex1 und ich hier der 2. : regex2";  
$suchmuster = array('#\w+1#', '#\w+2#');  
$ersetzung = array('der eine link 1', 'der andere link 2');  
  
echo preg\_replace($suchmuster, $ersetzung, $text);