preg_replace(): Ersetzen von Variablen / TemplateKlasse

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • derHund
    antwortet
    btw: signaturlinks werden afaik nicht gespidert bzw. archiviert
    wie meinst du das genau?
    http://search.msn.de/results.aspx?q=...elle.nophia.de

    OffTopic:
    auch wenn die links aus seo-sicht nix bringen, ich werde bei dem wettbewerb eh keine lorbeer ernten.

    wie bringe ich btw go-ogle dazu, site:www.php-resource.de link:gepardenforelle.nophia.de zu suchen?

    Einen Kommentar schreiben:


  • Wurzel
    antwortet
    Original geschrieben von derHund
    du solltest dir eventuell mal eine hommingberger gepardenforelle genehmigen, ...
    OffTopic:
    noch so einer ... nein, ICH tu es nicht tun

    btw: signaturlinks werden afaik nicht gespidert bzw. archiviert

    Einen Kommentar schreiben:


  • derHund
    antwortet
    hmm,

    ich verstehe dein problem nicht ...

    nimm die \b-lösung und gut. funktionierts oder wie oder was?
    wenn du eine tpl-interne variable mittels $ am anfang kennzeichnest, muß du ' verwenden oder escapen.

    ich weiß aber eigentlich garnicht genau, wo dein problem ist. irgendwie hast du es nocht nicht geschildert.

    OffTopic:
    du solltest dir eventuell mal eine hommingberger gepardenforelle genehmigen, ...

    ich weiß, wo du die günstig bekommst

    Einen Kommentar schreiben:


  • Shock2k
    antwortet
    Weils die möglichkeit gibt, dass wenn die Vars eben in der falschen reihenfolge kommen, dass es dann net funzt.

    Und da es diese Möglichkeit gibt ist es unsauber.

    Sin mer hier bei Microschrott oder was???? So auf die Art "Naja, wenn des net passiert und des net passiert dann gehts so halbwegs."

    Einen Kommentar schreiben:


  • aimbot
    antwortet
    was bitte is daran unsauber?!

    Einen Kommentar schreiben:


  • Shock2k
    antwortet
    ähm....Wär ne Möglichkeit, aber pfuschen wollt ich eigentlich nicht. *gg*

    Soll schon ne saubere und 100%ige Lösung sein.

    Einen Kommentar schreiben:


  • aimbot
    antwortet
    Re: preg_replace(): Ersetzen von Variablen / TemplateKlasse

    Original geschrieben von Shock2k

    Dann ersetzt er mir Variable $variable durch Martin.

    Bei der Variable $variable_x passiert dann logischerweise das:

    Du_x

    Er ersetzt ja wenn er $variable ersetzt alle Vorkommen im String.
    Und da $variable auch in $variable_x vorkommt ersetzt er das auch.
    Versteh ich das richtig? Wenn ja, könntest du doch einfach zuerst alle $variable_x ersetzen und dann $variable...
    oder hab ich das falsch verstanden?

    Einen Kommentar schreiben:


  • Shock2k
    antwortet
    $template = preg_replace('/\b'.$this->varcache[$i].'\b/',$this->valuecache[$i],$template);

    Ich hab mir jetzt erstma ausgeben lassen was im Suchstring steht und durch was es ersetzt werden soll:

    $nav_left_w -> 18%
    $content_w -> 82%
    $nav_right_w -> 0%
    $nav_top_h -> 0px
    $nav_bottom_h -> 0px
    $site_banner -> banner
    $nav_top -> top
    $nav_bottom -> bottom
    $redirect[code] -> redirect

    Also nehm ich doch an dass mein Pattern dann so aussehen tut:

    '/\b'.$nav_left_w.'\b/'
    Daraus folgt:

    $template = preg_replace('/\b'.$nav_left_w.'\b/',18%,$template);

    Diese Variablen die dann im Suchstring stehen, gibts im Template auch wirklich falls jetzt die Frage aufkommt. *gg*

    Einen Kommentar schreiben:


  • derHund
    antwortet
    Sobald da ein $ Zeichen im Spiel ist ersetzt er mir nix mehr. Wie verflucht dieses $ doch ist.
    dann laß dir doch erst mal das generierte pattern ausgeben, um zu sehen, ...
    Kein Wunder, du verwendest ja auch gar keine Assertion,
    meinst du, weil dort nur b steht? das forum verschluckt innerhalb der php-tags die \ ...
    Heißt es "von derHund" oder "vom Hund"
    ganz wie du möchtest. ich persönlich bevorzuge 'vom hund', die andere version klingt so distanziert

    Einen Kommentar schreiben:


  • onemorenerd
    antwortet
    Kein Wunder, du verwendest ja auch gar keine Assertion, wie es dir vorgeschlagen wurde. Lies hier und schau dir die beiden Beispiel von derHund nochmal an!

    (Heißt es "von derHund" oder "vom Hund"? )

    Einen Kommentar schreiben:


  • Shock2k
    antwortet
    Ajoa. Die Idee hört sich gut an, nur leider ersetzt er eigentlich gar keine variable mehr.

    PHP-Code:
    $template preg_replace('/\b('.$this->varcache[$i].')\b/',$this->valuecache[$i],$template); 

    Sobald da ein $ Zeichen im Spiel ist ersetzt er mir nix mehr. Wie verflucht dieses $ doch ist.


    EDIT:
    Galub ich dreh noch durch. Langsam wird die Klasse wirr!!!
    Zuletzt geändert von Shock2k; 15.04.2005, 23:34.

    Einen Kommentar schreiben:


  • derHund
    antwortet
    Re: preg_replace(): Ersetzen von Variablen / TemplateKlasse

    Müsste Quasi preg_replace nehmen und das so biegen, dass ich das Ende der Variablen festlege als Suchmuster.
    mittels der assertion \b kannst du festlegen, daß sich an dieser stelle eine wortgrenze befindet

    mal ein beispiel:
    http://pcre.nophia.de/evaluate/0c2ed...dex.php#output

    im vergleich dazu, ohne assertion:
    http://pcre.nophia.de/evaluate/b8407...dex.php#output

    Einen Kommentar schreiben:


  • Shock2k
    antwortet
    ja neee.

    will ich aber nich unbedingt, da der Designer dann wieder verwirrt ist.

    Is klar ne Möglichkeit, aber die gefällt mir halt nicht.

    Einen Kommentar schreiben:


  • Milian
    antwortet
    nimm doch im Template einfach {...} für Variablen.

    Einen Kommentar schreiben:


  • Shock2k
    hat ein Thema erstellt preg_replace(): Ersetzen von Variablen / TemplateKlasse.

    preg_replace(): Ersetzen von Variablen / TemplateKlasse

    Hi Profis.

    Stehe hier vor folgendem Problem:


    Schreibe mir gerade eine TemplateKlasse und will in meinem String aus dem Template die Variablen durch deren Werte ersetzen lassen.

    Mit str_replace() funktioniert das zwar schon ganz gut, aber wenn ich folgenden Fall habe:

    Hallo $variable, schön dass $variable_x hier bist.


    Angenommen:

    $variable = "Martin";
    $variable_x = "Du";


    Dann ersetzt er mir Variable $variable durch Martin.

    Bei der Variable $variable_x passiert dann logischerweise das:

    Du_x

    Er ersetzt ja wenn er $variable ersetzt alle Vorkommen im String.
    Und da $variable auch in $variable_x vorkommt ersetzt er das auch.

    Müsste Quasi preg_replace nehmen und das so biegen, dass ich das Ende der Variablen festlege als Suchmuster.

    Ende der Variablen im Template wäre Leerzeichen bzw Anführungszeichen.

    Habe das jetzt schon probiert, aber ich verzweifle total:

    PHP-Code:

    preg_replace
    ([/$suchmuster]+([\'"'|''$])/,$ersetzung,$template); 
    Das deutsche Tutoriel hier hat mir auch noch nicht geholfen.
Lädt...
X