Ankündigung

Einklappen
Keine Ankündigung bisher.

Funktionen Erklärung

Einklappen

Neue Werbung 2019

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

  • Funktionen Erklärung

    Hallo mal wieder,

    Da ich vor kurzem vieles über die Funktionen wie, preg_replace, ereg_replace, str_replace, eregi_repace usw. gehört hab, wollte ich mal wissen wie diese ganzen Funktionen aufgebaut sind. Ich weiss das es viel arbeit ist die jetzt alle zu beschreiben, aber ich wäre euch drotzdem sehr dankbar. Natürlich dürft ihr nicht denken, dass ich Faul bin und hier nur Fragen stelle. Aber im Manual hab ich nicht sonderlich viel daraus gewinnen können, dass heisst ich hab das ganze nicht verstanden.

    str_replace habe ich schon verwendet und zwar für BB-Codes und Smilies. Ich denke str_replace ist einer der leichteren Funktionen die ich wissen will.

    Danke schon mal im vorhinein.

    Mit freundlichen Grüßen

    TheSkaterFriend aka. Patrick F.


  • #2
    http://de.php.net/manual/de/function.str-replace.php
    http://de.php.net/manual/de/ref.pcre.php

    Was ist dort nicht zu verstehen?

    Kommentar


    • #3
      Code:
      $text = str_replace(":D","<img src=\"img/grins.gif\" width=\"15\" height=\"15\" border=\"0\">",$text);
      Fangen wir mal an :

      ok ganz am anfang steht $text
      $text ist die Varaiable ausder "replaced" wird.

      Dann kommt:
      Code:
      str_replace(":D","<img src=\"img/grins.gif\" width=\"15\" height=\"15\" border=\"0\">",
      nach dem str_replace( kommt "" aus diesem "" wird dann <img src=\"img/grins.gif\" width=\"15\" height=\"15\" border=\"0\">".
      Anschließend kommt dann wieder (am ende) $text
      das $text steht am ende weil in diese Varaible wieder der vom replace editierte text reingeschrieben wird

      Ich hoffe du hast das verstanden

      EDIT
      man Guradia du warst wieder schneller :>

      Kommentar


      • #4
        Danke, wie gesagt mit str_replace kenn ich mich eh schon so halbwegs aus. Die anderen würd ich auch gerne wissen. Dort verstehe ich das ganze mit der Ersätzung und so nicht. Wäre nett wenn mir das auch wer erklären könnte.

        Danke

        Tschau

        TSF

        Kommentar


        • #5
          Code:
          $text = str_replace(":D","<img src=\"img/grins.gif\" width=\"15\" height=\"15\" border=\"0\">",$text);
          aus dem
          Code:
          :D
          wird der smilie (code)
          Code:
          ","<img src=\"img/grins.gif\" width=\"15\" height=\"15\" border=\"0\">
          du editierst also das zu deinem smilie und machst aus dem
          Code:
          ","<img src=\"img/grins.gif\" width=\"15\" height=\"15\" border=\"0\">
          den quellcode zu deinem Smilie also wo er liegt welche größe etc.

          EDIT
          ansonsten wurde ich sagen wie er schon gesagt hat
          http://de.php.net/manual/de/function.str-replace.php
          http://de.php.net/manual/de/ref.pcre.php

          Kommentar


          • #6
            Wie ich schon bei meinem 1. Post geschrieben habe. Will ich ereg_replace, eregi_replace, preg_replace ect. wissen. Weil die für mich am schwersten zu verstehen sind. Danke.

            Tschau

            TSF

            Kommentar


            • #7
              Und wie ich schon schrieb: Was ist da nicht zu verstehen?

              Kommentar


              • #8
                Zitat von Guradia
                Und wie ich schon schrieb: Was ist da nicht zu verstehen?
                jo :>
                verstehe ich auch nich

                Kommentar


                • #9
                  Diese Funktion durchsucht Zeichenkette nach Übereinstimmungen mit Suchmuster und ersetzt dann den übereinstimmenden Text durch Ersatz.

                  Zurückgegeben wird die geänderte Zeichenkette, was auch bedeuten könnte, dass die ursprüngliche Zeichenkette zurückgegeben wird, wenn es keine zu ersetzenden Übereinstimmungen gibt.

                  Wenn Suchmuster eingeklammerte Teilzeichenketten enthält, darf Ersatz Teilzeichenketten der Form \\Ziffer enthalten, die dann durch die Ziffer'ste Teilzeichenkette ersetzt werden. \\0 erzeugt den gesamten Inhalt der durchsuchten Zeichenkette. Bis zu neun Teilzeichenketten dürfen verwendet werden. Klammern dürfen geschachtelt werden und werden in diesem Fall anhand der öffnenden Klammern gezählt.

                  Wenn in Zeichenkette keine Übereinstimmungen gefunden werden, wird Zeichenkette unverändert zurückgegeben.

                  Ich verstehe nicht was es mit den \\ und so auf sich hat.


                  Der folgende Code-Schnipsel gibt zum Beispiel dreimal "Das war ein Test" aus:

                  Beispiel 1. ereg_replace() Beispiel

                  <?php

                  $string = "Das ist ein Test";
                  echo ereg_replace(" ist", " war", $string);
                  echo ereg_replace("( )ist", "\\1war", $string);
                  echo ereg_replace("(( )ist)", "\\2war", $string);

                  ?>



                  Folgendes ist zu beachten: Wenn Sie als Ersatz einen ganzzahligen Wert verwenden, bekommen sie vielleicht nicht das erwartete Ergebnis. Das liegt daran, dass ereg_replace() die Zahl als Ordinalwert eines Zeichens betrachtet und dieses verwendet. Zum Beispiel:

                  Beispiel 2. ereg_replace() Beispiel

                  <?php
                  /* Dieses funktioniert nicht wie erwartet. */
                  $zahl = 4;
                  $zeichenkette = "Diese Zeichenkette hat vier Wörter.";
                  $zeichenkette = ereg_replace('vier', $zahl, $zeichenkette);
                  echo $zeichenkette; /* Ausgabe: 'Diese Zeichenkette hat Wörter.' */

                  /* Dieses funktioniert. */
                  $zahl = '4';
                  $zeichenkette = "Diese Zeichenkette hat vier Wörter.";
                  $zeichenkette = ereg_replace('vier', $zahl, $zeichenkette);
                  echo $zeichenkette; /* Output: 'Diese Zeichenkette hat 4 Wörter.' */
                  ?>



                  Beispiel 3. Ersetzen von URLs durch Links

                  <?php
                  $text = ereg_replace("[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]",
                  "<a href=\"\\0\">\\0</a>", $text);
                  ?>
                  An den Beispielen kann ich auch nicht gerade was schlau es daraus gewinnen. Besonders beim 3. Beispiel.

                  preg_replace

                  Durchsucht Zeichenkette nach Übereinstimmungen mit Suchmuster und ersetzt sie mit Ersatz. Falls Limit angegeben wurde, werden nur Limit Übereinstimmungen ersetzt. Wird Limit weggelassen oder ist es -1, dann werden alle Übereinstimmungen ersetzt.

                  Ersatz darf Referenzen in der Form \\n oder (seit PHP 4.0.4) $n enthalten, wobei Letztere vorzuziehen ist. Jede dieser Referenzen wird mit dem Text ersetzt, der vom n-ten eingeklammerten Suchmuster erfasst wurde. n kann einen Wert von 0 bis 99 haben. \\0 oder $0 beziehen sich auf den Text, der mit dem kompletten Suchmuster übereinstimmt. Um die Nummer des erfassenden Teil-Suchmusters zu erhalten, werden öffnende Klammern mit 1 beginnend von links nach rechts gezählt.

                  Wenn Sie mit einer Ersetzung arbeiten wollen, in der auf eine Rückreferenzierung direkt eine weitere Zahl folgt (d.h., direkt nach der Übereinstimmmung mit einem Suchmuster soll eine Zahl kommen), können Sie für Ihre Rückreferenzierung nicht die Schreibweise \\1 verwenden. So würde z.B. \\11 die Funktion preg_replace() verwirren, weil sie nicht weiß, ob Sie die Rückreferenzierung \\1 gefolgt von der Zahl 1 wollen oder nur die Rückreferenzierung \\11. In diesem Fall ist die Lösung, \${1}1 zu verwenden. Damit wird eine isolierte Rückreferenzierung $1 erzeugt und die 1 bleibt ein Zahlensymbol.
                  Hier wieder $ und \\ keine ahnung. Das verwirrente sind dann die Beispiele.

                  Beispiel 1. Die Verwendung von Rückreferenzierungen mit darauf folgenden numerischen Literalen

                  <?php
                  $zeichenkette = "15. April 2003";
                  $suchmuster = "/(\d+)\. (\w+) (\d+)/i";
                  $ersetzung = "\${2}1,\$3";
                  echo preg_replace($suchmuster, $ersetzung, $zeichenkette);
                  ?>

                  Dieses Beispiel erzeugt folgende Ausgabe:

                  April1,2003
                  Dieses Beispiel verstehe ich, da es mit Arrays ist und einfach zu verstehen ist.

                  Beispiel 2. Die Verwendung von preg_replace() mit indizierten Arrays

                  <?php
                  $zeichenkette = "Der schnelle braune Fuchs sprang über den faulen Hund.";

                  $suchmuster[0] = "/schnelle/";
                  $suchmuster[1] = "/braune/";
                  $suchmuster[2] = "/Fuchs/";

                  $ersetzungen[2] = "Bär";
                  $ersetzungen[1] = "schwarze";
                  $ersetzungen[0] = "langsame";

                  echo preg_replace($suchmuster, $ersetzungen, $zeichenkette);
                  ?>

                  Ausgabe:

                  Der Bär schwarze langsame sprang über den faulen Hund.


                  Wenn wir Suchmuster und Ersetzungen mit ksort() sortieren, sollten wir bekommen was wir wollten.

                  <?php

                  ksort($suchmuster);
                  ksort($ersetzungen);

                  echo preg_replace($suchmuster, $ersetzungen, $zeichenkette);

                  ?>

                  Ausgabe:

                  Der langsame schwarze Bär sprang über den faulen Hund.
                  Das sind 2 Funktionen die ich nicht verstehe. Vielleicht haltet ihr mich für dumm, wer weiss vielleicht bin ich's ja, auf jeden fall brauch ich hilfe. Danke.

                  Tschau

                  TSF

                  Kommentar


                  • #10
                    Zitat von TheSkaterFriend
                    Ich verstehe nicht was es mit den \\ und so auf sich hat.
                    \ leitet ein Escape-Sequenz im Pattern ein. Für Befehle oder Sonderzeichen
                    Da in ' und "-Strings ein \ ebenfalls schon ein Escape ist, muss \\ geschrieben werden.

                    \123 resutliert in einer Oktalumesetzun (*?!* .. k/a brauch ich nicht ^^)
                    \1 könnte aber auch für eine BackReference gehalten werden.

                    Letzteres ist interessant und sollte uach gleich anders geschrieben werden:

                    im Such-Pattern hast du z.B. /<a href="(.*)">/
                    Über $1 bekommst du in diesem Beispiel exakt die gefundene URL. Und kannst sie im Ersetzen-Pattern wieder einstzen.
                    $1 bis $99 kann es geben. Da diese Zahlen mit \1 bis \99 durcheinander geraten könnten, soll nur noch die $#-Variante genutzt werden.

                    Evtl. erklären sich andere Fragen damit direkt ?!

                    Kommentar


                    • #11
                      mhm
                      wenn ich mir zum beispiel mal das hier angucke ...

                      wofür sind dann diese tausenden komischen ranzzeichen da ?
                      also die /\?:^sn*bi0"

                      das sind alles zeichen die da irgendwie drin sind
                      ich will garnicht, dass mir das jemand erklärt ... aber ihr wisst es ... woher ?
                      es muss doch irgendwo eine oder merhere quellen geben, die sagen ... z.b. nach [ kommt immer \ oder was auch immer ... und eine quelle die mir auch dieses ^ oder das : oder * erklären kann

                      btw. muss man wissen was pattern ist ? :P


                      Code:
                         $strUrl = preg_replace("/(http(s)?:\\/\\/[^\\s\\n]*)\\b(\\/)?/i","<a href=\\"\\\\0\\">\\\\0</a>",$strUrl);
                         return $strUrl;
                      Vielen Dank

                      Kommentar


                      • #12
                        Genau, irgendwo muss es den Architekt zu der Matrix geben. Ihr habt es ja auch irgendwo gelernt. Wir würden eben gerne wissen wo.

                        See ya

                        TSF

                        Kommentar


                        • #13
                          also mitlerweile is das thered Tutorial reif
                          also mach mal einer :>

                          Kommentar


                          • #14
                            Zitat von <Jan_M>
                            also mitlerweile is das thered Tutorial reif
                            also mach mal einer :>
                            nee .. der ist nicht tutorial-reif .. denn
                            http://www.tutorials.de/tutorials142738.html
                            privater Blog

                            Kommentar


                            • #15
                              Das ichs nicht vergesse. Danke an alle die geantwortet haben. Danke für die Links. Danke für die Erklärungen. Danke, Danke und nochmals Danke.

                              Mfg

                              TheSkaterFriend

                              Kommentar

                              Lädt...
                              X