tutorials.de Buch-Aktion 02/2012
ERLEDIGT
JA
ANTWORTEN
7
ZUGRIFFE
574
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von max
    max max ist offline Mitglied Gold
    Registriert seit
    Nov 2001
    Ort
    Salzburg
    Beiträge
    201
    Ich stehe gerade vor einem mehr oder weniger kleinem Problem.

    Ich habe einen Text in einer Variable in dem wiederum einige Variablen definiert sind.
    Die Variablen im Text sind so definiert: [@variablenname]

    Jetzt durchsuche ich diesen Text via preg_replace und jetzt kommt das Problem ich möchte den Teil mit [@variablenname] durch den Inhalt eben dieser Variable (also im Skript $variablenname) ersetzen.

    Ich kann leider kein Array aus bestimmten Variablen verwenden die ich ersetzen will, da ich das Ganze so allgemein wie möglich halten will, da ich es öfter benötige.

    PHP-Code:
    $anrede "Anrede";
    $vName "Vorname";
    $nName "Nachname";
    $email aaa@bbb.ccc;
    $msg "Inhalt Nachricht";
     
     
    $text "[@anrede]\n\n[@vName] [@nName] hat folgende Nachricht gesendet:\n[@msg]\n\nKontaktdaten:\nVorname: [@vName]\nNachname: [@nName]\nE-Mail: [@email]\n";
     
    $pattern ',\[@([a-zA-Z0-9]*)\],i';
    $text_neu preg_replace($pattern,"$\1",$text); 
     

  2. #2
    Avatar von MiNiMaG
    MiNiMaG MiNiMaG ist offline Mitglied Brokat
    Registriert seit
    Apr 2004
    Ort
    Zwickau / Sachsen
    Beiträge
    287
    Probiers mal mit str_replace

    Aber irgendwie hab ich dein Problem nicht ganz kapiert :P
     
    ..:: MiNiMaG ::..

  3. #3
    firstlord18 firstlord18 ist offline Mitglied Platin
    Registriert seit
    Nov 2004
    Beiträge
    505
    sind doch ganz normale platzhalter. einfach str_replace mit arrays als parameter verwenden
     

  4. #4
    Avatar von MiNiMaG
    MiNiMaG MiNiMaG ist offline Mitglied Brokat
    Registriert seit
    Apr 2004
    Ort
    Zwickau / Sachsen
    Beiträge
    287
    Dann hab ich ihn doch richtig verstanden.
     
    ..:: MiNiMaG ::..

  5. #5
    Registriert seit
    Dec 2002
    Ort
    Trier
    Beiträge
    17.502
    Blog-Einträge
    10
    Probier mal Folgendes:
    PHP-Code:
    preg_replace('/\[@([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)\]/ei''${"\1"}'$string
    Vielleicht sollte zusätzlich noch geprüft werden, ob die Variable überhaupt existent ist. Der Ausdruck „[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*“ entstammt übrigens dem PHP-Handbuch (s. Kapitel über Variablen) und sollte daher nicht verändert werden.
     
    Markus Wulftange

  6. #6
    Avatar von forsterm
    forsterm forsterm ist offline Mitglied Rubin
    Registriert seit
    Nov 2004
    Ort
    Bayern
    Beiträge
    1.328
    Hallo,
    wenn du es mit Regulären Ausdrücken lösen willst, dann verwende das hier:
    PHP-Code:
    <?
    $anrede 
    "Anrede";
    $vName "Vorname";
    $nName "Nachname";
    $email "aaa@bbb.ccc";
    $msg "Inhalt Nachricht";
     
     
    $text "[@anrede]\n\n[@vName] [@nName] hat folgende Nachricht gesendet:\n[@msg]\n\nKontaktdaten:\nVorname: [@vName]\nNachname: [@nName]\nE-Mail: [@email]\n";
    $text nl2br($text);
    $text preg_replace("/\[@([a-zA-Z]+)\]/","$\\1"$text);
    eval (
    "\$text = \"$text\";");
    echo 
    $text;
    ?>
    mfg
    forsterm
     
    Wie man Fragen richtig stellt

    Wichtig:
    Bitte markiert eure beantworteten Fragen als "erledigt" (links unten auf "Erledigt" klicken).
    __________________
    .:Mitglied #26 des 1. offiziellen Sven Uwe Fan-Clubs:.

  7. #7
    Avatar von max
    max max ist offline Mitglied Gold
    Registriert seit
    Nov 2001
    Ort
    Salzburg
    Beiträge
    201
    Danke für eure Antworten!


    @forsterm:
    So in die Richtung hatte ich das auch schon aber ich wollte das Ganze ohne eval() lösen, da der Text von einem Kontaktformular kommt.

    P.S.: Sorry das ich erst so spät wieder schreibe aber ich brauchte mal etwas Wochenende

    EDIT:
    @Gumbo:
    Ich war leider etwas zu Voreilig mit meinem Post.
    Hab gerade deine probiert und die funktioniert wunderbar!

    Nochmal Danke!

    Also das Ganze sieht jetzt so aus:
    PHP-Code:
      <?
      $anrede 
    "Anrede";
      
    $vName "Vorname";
      
    $nName "Nachname";
      
    $email "aaa@bbb.ccc";
      
    $msg "Inhalt Nachricht";
       
       
     
    $text "[@anrede]\n\n[@vName] [@nName] hat folgende Nachricht gesendet:\n[@msg]\n\nKontaktdaten:\nVorname: [@vName]\nNachname: [@nName]\nE-Mail: [@email]\n";
      
    $text preg_replace('/\[@([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)\]/ei''${"\1"}'$text);
      echo 
    $text;
      
    ?>
    Geändert von max (18.12.05 um 14:37 Uhr) Grund: Wer liest ist klar im Vorlteil!
     

  8. #8
    Registriert seit
    Dec 2002
    Ort
    Trier
    Beiträge
    17.502
    Blog-Einträge
    10
    Hast du meinen Vorschlag schon ausprobiert?
     
    Markus Wulftange

Ähnliche Themen

  1. Antworten: 5
    Letzter Beitrag: 25.04.07, 21:44
  2. Antworten: 3
    Letzter Beitrag: 17.01.07, 09:54
  3. Antworten: 17
    Letzter Beitrag: 23.03.05, 13:41
  4. Antworten: 1
    Letzter Beitrag: 22.11.03, 14:12
  5. Text durch Smeilys ersetzten
    Von Yoda im Forum PHP
    Antworten: 3
    Letzter Beitrag: 19.07.03, 15:54