Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Teil eines Strings umwandeln

Einklappen

Neue Werbung 2019

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

  • #16
    Danke, preg_replace_callback sollte funktionieren.
    Bei der Definition der pattern hab ich aber noch Probleme.

    Kommentar


    • #17
      Bei der Definition der pattern hab ich aber noch Probleme.
      Ja. Das ist bedauerlich für Dich.




      Wenn Du Hilfe suchst stell ne Frage
      [COLOR="#F5F5FF"]--[/COLOR]
      [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
      „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
      [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
      [COLOR="#F5F5FF"]
      --[/COLOR]

      Kommentar


      • #18
        statt [MAN]preg_replace_callback[/MAN] würde auch ein normales [MAN]preg_replace[/MAN] mit dem e-Modifier ausreichen.
        [IMG]http://media.ubuntuusers.de/portal/files/ubuntu.png[/IMG][IMG]http://sqlmanager.net/i/ico/mysql.gif[/IMG][SIGPIC][/SIGPIC]

        Kommentar


        • #19
          Danke.
          Ich hahbe es nun mal mit preg_replace mit Modifier e versucht. Der RegExp-Evaluator - RegExp-Tutorial - PHP-Funktionen - preg_replace()

          PHP-Code:
          <?php
          $inhalt 
          '<strong>davor [begruessung, name=Max Muster] dahinter</strong>';

          $inhalt preg_replace('#\[begruessung, name=(.*)\]#Uise'"'<i>'.strtoupper('\\1').'</i>'"$inhalt); 

          echo 
          $inhalt;
          ?>
          Was ich allerdings nicht verstehe, ist, warum ich strtoupper nicht durch eine beliebige andere Funktion ersetzen kann, zB durch echo oder eine eigens definierte.
          Wie kommt das?

          Kommentar


          • #20
            ... oder muss ich hier doch
            PHP-Code:
            preg_replace_callback 
            verwenden?

            Kommentar


            • #21
              "echo" ist keine Funktion sondern ein Sprachkonstrukt...
              Wie ich bereits in #9 erwähnt habe, ist es völlig sinnfrei es zu benutzen, denn
              PHP-Code:
              $inhalt preg_replace('#\[begruessung, name=(.*)\]#Uis'"<i>Hallo \\1</i>"$inhalt); 
              Natürlich kannst du auch jede andere Funktion aufrufen...
              PHP-Code:
              function sayHello($name) {
                  return 
              sprintf("hello my dear friend %s"$name);
              }
              $inhalt preg_replace('#\[begruessung, name=(.*)\]#Uise'"'<i>'.sayHello('\\1').'</i>'"$inhalt); 
              [IMG]http://media.ubuntuusers.de/portal/files/ubuntu.png[/IMG][IMG]http://sqlmanager.net/i/ico/mysql.gif[/IMG][SIGPIC][/SIGPIC]

              Kommentar


              • #22
                Was ich allerdings nicht verstehe, ist, warum ich strtoupper nicht durch eine beliebige andere Funktion ersetzen kann, zB durch echo oder eine eigens definierte.
                Wie kommt das?
                echo ist keine Funktion, sondern ein Sprachkonstrukt.
                ... oder muss ich hier doch
                preg_replace_callback
                verwenden?
                Probier' es aus.

                Btw. die Tags <b>, <i> und <u> sind veraltet, also formatiere deinen Text mit CSS.
                [URL]http://hallophp.de[/URL]

                Kommentar


                • #23
                  Danke für eure Antworten.
                  Btw. die Tags <b>, <i> und <u> sind veraltet, also formatiere deinen Text mit CSS.
                  Das war nur zur Probe, ob es auch funktioniert...

                  Ich habe es nun mit preg_replace_callback hinbekommen:

                  PHP-Code:
                  <?php

                  function ersetzen($treffer) {
                      
                  $text 'Hallo '.$treffer[1].' '.$treffer[2].'!'
                      return 
                  $text;
                  }

                  $inhalt '<strong>davor [begruessung, vorname=Max, nachname=Muster] dahinter</strong>'

                  $inhalt preg_replace_callback('#\[begruessung, vorname=(.*), nachname=(.*)\]#Uis''ersetzen'$inhalt);

                  echo 
                  $inhalt;

                  ?>
                  Sollte $inhalt, allerdings php enthalten,
                  Code:
                  <?php include ("datei.php"); ?><strong>davor [begruessung, vorname=Max, nachname=Muster] dahinter</strong>
                  so wird es am Ende nicht mehr interpretiert. Irgendwie verstehe ich das immernoch nicht.

                  Kommentar


                  • #24
                    Warum enthält sie überhaupt PHP-Code?
                    [URL]http://hallophp.de[/URL]

                    Kommentar


                    • #25
                      zur Not hilft [MAN]eval[/MAN]
                      [IMG]http://media.ubuntuusers.de/portal/files/ubuntu.png[/IMG][IMG]http://sqlmanager.net/i/ico/mysql.gif[/IMG][SIGPIC][/SIGPIC]

                      Kommentar


                      • #26
                        Pfui, lass uns doch erst mal den Grund für den PHP-Code in der Variablen klären.

                        @9999 Kannst du die Datei nicht schon vorher einbinden?
                        [URL]http://hallophp.de[/URL]

                        Kommentar


                        • #27
                          Das Ganze soll einem Benutzer (der keine Ahnung von HTML oder php hat) ermöglichen, Inhalte auf seine HP zu packen.
                          Das ganze funktioniert wie folgt:
                          Datei wird eingelesen > Benutzer bearbeitet Datei in textarea > Datei wird gespeichert
                          Bisher war das auch kein Problem, allerdings soll es nun möglich sein, dynamische Inhalte einzufügen, zB über [mailto-encoder]mail@domain.de[/mailto-encoder] einen mailto-encoder.
                          Daher kann es vorkommen, dass die Datei, die eingelesen wird, eine php-Datei ist und php code enthält, der eben unangetastet bleiben soll...

                          Kommentar


                          • #28
                            Das erklärt immer noch nicht warum du php in deinem text hast. Wenn jemand [include]datei.php[/include] schreibt, dann hast du ja trotzdem kein PHP drin.
                            [IMG]http://media.ubuntuusers.de/portal/files/ubuntu.png[/IMG][IMG]http://sqlmanager.net/i/ico/mysql.gif[/IMG][SIGPIC][/SIGPIC]

                            Kommentar


                            • #29
                              Es wird aber ja die bisherige Seite eingeladen. Und wenn in der schon php drin ist (warum auch immer), soll der Abschnitt so bleiben (unabhängig davon, ob der User sowas wie [include]datei.php[/include] schreibt oder nicht.
                              Die Seite, die geladen wird kann zB so aussehen:
                              Code:
                              <h1>Die &Uuml;berschrift</h1>
                              <p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.</p>
                              <?php /* hier dann zB ein Besucherzähler oder sonstwas */ ?>
                              <p>Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.</p>
                              und dann soll der php Abschnitt so bleiben. Trotzdem soll der User dann sowas wie [include]datei.php[/include] einfügen können.

                              Daher folgende Frage: Wie kann ich den php Abschnitt so lassen und trotzdem den bestimmte Strings, die der User eingibt, umwandeln?

                              Kommentar


                              • #30
                                Ok, habe es hinbekommen.
                                Die Lösung war einfach, dass der String im Beispiel ja per echo ausgegeben wurde. Das war der Fehler.
                                Vielen Dank für eure Hilfe!

                                Kommentar

                                Lädt...
                                X