Ankündigung

Einklappen
Keine Ankündigung bisher.

PHP Code aus DB ausführen (eval ? für gettext möglich)

Einklappen

Neue Werbung 2019

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

  • PHP Code aus DB ausführen (eval ? für gettext möglich)

    Hallo,

    ich benutze für meine mehrsprachige Webseite gettext.
    In einer Tabelle der DB habe ich jedoch Vorgabetexte in englisch stehen.
    Dioese versuche ich aktuell auch mit gettext ausgeben zu lassen so dass ich diese dann später mehrsprachig habe.

    Nun habe ich gelesen das man mit "eval " PHP Code ausgeben lassen kann

    Habe dazu dieses Beispiel gefunden
    PHP-Code:
    $var_1 'Briefmarke';

    $var_2 'Mauritius';

    $text 'Wer kennt nicht die wertvolle $var_1 von $var_2.';

    echo 
    $text;

    echo 
    '<br>';

    eval ( 
    "\$text = \"$text\";" );

    echo 
    $text
    ich dachte wenn ich jetzt in der DB meine Vorgabetexte in gettext-form schreibe also
    z.B. so

    Datenbankinhalt:

    Spalte_1 : _('Hello')
    Spalte_2: _('Greetings')

    und dann in der Seite.php

    selbst die gettext Variablen bestimme (so dass sie erstmal von gettext erkannt und man sie mit poedit bearbeiten kann

    $test1 = _('Greetings');
    $test2 = _('Hello');


    eval ( "\$text1 = \"$row->Spalte_1\";" );
    eval ( "\$text2 = \"$row->Spalte_2\";" );

    echo " das ist ein test aus spalte_1" .$text1."<br>";
    echo " das ist ein test aus spalte_2 ".$text2."<br>";

    ob das funktionieren könnte?

    was meint ihr?

    Grüße Jürgen


  • #2
    Code gehört nicht in die Datenbank. Arbeite mit Platzhalter und ersetze die Platzhalter nachdem du die Daten aus der Datenbank geholt hast.

    [man]strtr[/man] und [man]str_replace[/man] helfen dir dabei.
    [URL="https://gitter.im/php-de/chat?utm_source=share-link&utm_medium=link&utm_campaign=share-link"]PHP.de Gitter.im Chat[/URL] - [URL="https://raindrop.io/user/32178"]Meine öffentlichen Bookmarks[/URL] ← Ich habe dir geholfen ? [B][URL="https://www.amazon.de/gp/wishlist/348FHGUZWTNL0"]Beschenk mich[/URL][/B].

    Kommentar


    • #3
      oder sprintf / vsprintf.
      Alternativ dann vielleicht noch symfony: translation und/oder symfony: expression language (für "wenn anzahl=1, dann singular, sonst plural")
      Standards - Best Practices - AwesomePHP - Guideline für WebApps

      Kommentar


      • #4
        Zitat von tr0y Beitrag anzeigen
        Code gehört nicht in die Datenbank. Arbeite mit Platzhalter und ersetze die Platzhalter nachdem du die Daten aus der Datenbank geholt hast.

        [man]strtr[/man] und [man]str_replace[/man] helfen dir dabei.
        ´Damit ich es besser verstehe

        in der DB steht also der Text wie folgt

        -Hello--

        und die "-" ersetze ich dann mit " -(' " und "--" mit " ') "

        meinst Du das so?

        Gruß Jürgen

        Kommentar


        • #5
          Zum Beispiel. Allerdings solltest du Platzhalter nutzen die einzigartig sind und nicht Bestandteil einer regulären Benutzereingabe sind.

          PHP-Code:
          $string 'Hello {name}!';

          echo 
          str_replace('{name}''World'$string); 
          [URL="https://gitter.im/php-de/chat?utm_source=share-link&utm_medium=link&utm_campaign=share-link"]PHP.de Gitter.im Chat[/URL] - [URL="https://raindrop.io/user/32178"]Meine öffentlichen Bookmarks[/URL] ← Ich habe dir geholfen ? [B][URL="https://www.amazon.de/gp/wishlist/348FHGUZWTNL0"]Beschenk mich[/URL][/B].

          Kommentar

          Lädt...
          X