Ankündigung

Einklappen
Keine Ankündigung bisher.

String aufteilen und links herausfiltern

Einklappen

Neue Werbung 2019

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

  • String aufteilen und links herausfiltern

    Moin,
    also ich möchte einen String aufteilen.
    Genauer:
    Es wird ein string übergeben mit mehreren links, Beispiel:
    So, nun möchte ich die einzelnen links "herausfiltern" damit ich sie einzeln in eine Datenbank eintragen kann.
    Ich habs versucht, auch schon gegoogelt und komme einfach nicht zu meinen gewünschten ergebnis.
    Ich muss ja eigendlich erstinmal heraus finden wie lange die einzelnen links sind, da es ja auch unterschiedliche links seinen können, nicht wie im Beispiel und somit auch eine unterschiedlich größe haben können.
    Ich finde einfach nicht die passenden Funktionen dafür...
    Hoffe hier bekomme ich ein wenig Hilfe.

    Mfg

  • #2
    Hi,

    versuchs mal mit:

    [MAN]preg_match_all[/MAN]
    oder auch:
    [MAN]explode[/MAN]("http://", ...);


    Gute Seite:
    REGEX TESTER - Regular Expressions - Regulärer Ausdrücke online testen

    Kommentar


    • #3
      Explode nach Leerzeichen. URLs können keine Leerzeichen enthalten.
      [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


      • #4
        Zitat von nikosch Beitrag anzeigen
        Explode nach Leerzeichen. URLs können keine Leerzeichen enthalten.
        dann bekomme ich das wieder
        PHP-Code:
        Array ( [0] => http://google.de http://google.de http://google.de http://google.de ) 
        Damit kann ich doch auch nichts Anfangen oder?

        Nochmal zu den regulären ausdrücken, ich hab mir da jetzt ein tutorial durchgelesen und habe es mal so gemacht:
        PHP-Code:
        $result preg_match_all('#http://[a-z0-9\-_/.]+#'$links$subpattern); 
        Ist das soweit richtig? Ein Frage hab ich da noch wofür steht der letzte parameter, in diesem Fall "$subpattern".

        Kommentar


        • #5
          Was steht denn da zwischen den ersten beiden URLs für ein Zeichen? Ein Leerzeichen scheint es ja nicht zu sein.
          [PHP]if ($var != 0) {
          $var = 0;
          }[/PHP]

          Kommentar


          • #6
            dann bekomme ich das wieder.
            Nein, das ist Unsinn. Dann sind Deine URLs mit anderen Leerzeichen wie Tabs oder nbsp; getrennt. Das weißt aber nur Du.

            Ein Frage hab ich da noch wofür steht der letzte parameter, in diesem Fall "$subpattern".
            RTFM

            http://www.php.de/php-einsteiger/489...rundlagen.html
            [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


            • #7
              Zitat von nikosch Beitrag anzeigen
              Nein, das ist Unsinn. Dann sind Deine URLs mit anderen Leerzeichen wie Tabs oder nbsp; getrennt. Das weißt aber nur Du.

              RTFM

              http://www.php.de/php-einsteiger/489...rundlagen.html

              Entschuldigung, du hast recht habe ich vergessen zu erwähnen das man die links im Eingabefeld mit einem umbruch trennt.

              Kommentar


              • #8
                Dann benutze am besten einen regulären Ausdruck, um

                - entweder alle URLs zu fetchen
                - oder nach allen bekannten Leerzeichen (\s für Whitespace) aufzutrennen
                [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


                • #9
                  mhm....was hab ich da falsch gemacht?

                  Wenn ich das abschicke
                  PHP-Code:
                  http://www.google.de/
                  http://www.web.de/
                  http://www.facebook.de/ 
                  Bekomme ich das ausgegeben:
                  PHP-Code:
                  http://www.facebook.de/ 
                  Was genau hab ich falsch gemacht, dass nur der letzte link ausgegeben wird?

                  Hier der Code
                  PHP-Code:
                  $result preg_match_all('#http://[a-z0-9\-_/.]+#'$links$subpattern);
                    
                    foreach(
                  $subpattern[0] as $links) {
                      
                  $links $links;
                    }
                    echo 
                  $links

                  Kommentar


                  • #10
                    Zitat von NeoPow Beitrag anzeigen
                    Was genau hab ich falsch gemacht, dass nur der letzte link ausgegeben wird?
                    Du überschreibst $links in deiner Schleife immer wieder - so das logischerweise am Ende nur der letzte Wert übrig bleibt.

                    Dir fehlt Grundlagenwissen, wenn du solche Fragen stellen musst; bitte hier entlang: http://www.php.de/php-einsteiger/489...nsammlung.html
                    [SIZE="1"]RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?[/SIZE]

                    Kommentar


                    • #11
                      Du überschreibst die Variable mit jedem Schleifendurchlauf.

                      http://www.php.de/php-einsteiger/489...nsammlung.html
                      [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


                      • #12
                        Du kannst mit explode() auch nach Zeilenumbruch trennen...

                        Da verschiedene Systeme verschieden Umbruchzeichen verwenden (Win: \r\n, Mac: \r Linux: \n) solltest du jedoch vorher prüfen welches davon vorkommt.

                        Als erstes prüfst du auf die Windows Variante, kommt diese nicht vor steht am Ende der Zeilen entweder \r oder \n was dann auch leicht zu prüfen ist.

                        Beispiel:
                        PHP-Code:
                        $str 'url url url'//wir stellen uns vor die Leerzeichen sind Umbrüche
                        if (strpos("\r\n"$str) !== false) { //windows
                           
                        $urlArray explode("\r\n"$str);
                        } else if (
                        strpos("\n"$str) !== false) { //linux
                           
                        $urlArray explode("\n"$str);
                        } else { 
                        //müll...
                           
                        $urlArray explode("\r"$str);

                        "Alles im Universum funktioniert, wenn du nur weißt wie du es anwenden musst".

                        Kommentar


                        • #13
                          Das halte ich für ziemlich übertrieben, zumal man eine Kombination aus verschiedenen Leerzeichen selten ausschließen kann und preg_split hier einen Bruchteil des Codes benötigt.
                          [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


                          • #14
                            Zitat von nikosch Beitrag anzeigen
                            Das halte ich für ziemlich übertrieben, zumal man eine Kombination aus verschiedenen Leerzeichen selten ausschließen kann und preg_split hier einen Bruchteil des Codes benötigt.
                            Hoppala... hatte die RegEx Version noch gar nicht gesehen.

                            Du hats natürlich recht, das ist doch um einiges kürzer.
                            "Alles im Universum funktioniert, wenn du nur weißt wie du es anwenden musst".

                            Kommentar


                            • #15
                              So ich habs jetzt hinbekommen, für alle die es Interessiert:
                              PHP-Code:
                               preg_match_all('#http://[a-z0-9\-_/.]+#'$links$subpattern);

                                foreach(
                              $subpattern[0] as $key => $value) {
                                 echo 
                              $value."<br>";
                                } 

                              Ich bedanke mich an allen die mir hier geholfen haben.

                              Kommentar

                              Lädt...
                              X