frage zu preg_match

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

  • frage zu preg_match

    hallo,

    ich probiere heut schon den ganzen nachmittag mich mit preg_match auseinander zu setzten.
    (hab das tut von php-resource und einige die ich über google gefunden hab gelesen)

    beispiel:

    (kanotix.com)
    (distrowatch.com)
    kanotix.mipooh.net
    os.newsforge.com
    (www.linuxtimes.net)
    opensource.weblogsinc.com
    forum.kanotix.net
    distrocenter.linux.com
    (www.golem.de)
    (librenix.com)
    ftp.fbihome.de
    (www.canadiancontent.net)
    debian.tu-bs.de
    www.linuxonline.biz
    www.linuxcdshop.ca
    66.102.9.104
    linux.kiraninfotech.com
    en.wikipedia.org
    www.thelinuxshop.co.uk
    (www.cheeplinux.com)
    www.linuxcd.org
    (www.osdepot.com)
    ftp.lug.ro
    iso.linuxquestions.org
    gd4.tuwien.ac.at
    (www.mail-archive.com)
    (www.easylinuxcds.com)
    (www.linux.com)
    (dimension2k.de)
    69.170.105.247:8080
    (www.pc-magazin.de)
    jmccoy.sdf-us.org
    forums.scotsnewsletter.com
    wiki.kanotix.net
    (tuxme.com)

    ich habe strings (diese sind wahllos von google kopiert um es besser erklären zu können). nun möchte ich mit preg_match alles was in klammern steht zur verfügung haben.

    das heist:

    - alles mit oder ohne www. am anfang
    - alles mit de, com oder net am ende

    alles andere soll weg.

    mein ergebnis von ca. 4 stunden:

    PHP-Code:

    if((preg_match('/de|net|com$/i'$value)) && (!preg_match('/ftp./i'$value)))
    {
        print 
    $erg.'<br />';

    aber leider bringt es nicht den erfolg. kann mir bitte jemand zeigen wie der richtige preg-match string aussehen muss.

    besten danke
    gruss
    malaga

  • #2
    So, um dich langsam richtung Lösung zu bringen.

    Wieso sollte $erg einen Wert enthalten?

    Kommentar


    • #3
      hi TobiaZ,

      sorry für $erg soll natürlich $value stehen. ich hab den code fürs forum auseinander genommen damit ich es besser erklären kann.

      ich bin jetzt so weit:

      PHP-Code:

      foreach($erg as $value)
          {
              if(
      preg_match('/^[w]{3}  (.*)\.(de|net|com)$/i'$value))
              {
                  print 
      $value.'<br />';
              }
          } 
      weiss aber nicht ob es die richtige richtung ist.

      Kommentar


      • #4
        Aber in $value steht doch der komplette String mit allen adressen/klammern/texten/...

        Das kann es also auch nicht sein.

        Als nächstes gucken wir und die Funktion preg_replace an sich mal an. Schließlich wollen wir doch ALLE Teilstrings (aus $value) haben, die dem Pattern (welches noch nicht ganz bekannt ist) entsprechen. preg_match_all wäre also angebrachter.

        Kommentar


        • #5
          buh,

          du bringst mich ganz schön aus dem gleichgewicht

          also nochmal (nur damit wir nicht aneinander vorbeireden)

          PHP-Code:

          # ich hab ein string und mach ein array daraus:
          $array explode('#'$parts5);

          # ich entferne alle doppelten Einträge
          $erg array_unique($array);

          # jetzt durchlaufe ich das array
          foreach($erg as $value)
          {
              
          # wenn mein wille zutrifft (siehe oben)
              
          if(preg_match('/^([w]{3})|(.*)(.*)\.(de|net|com)$/i'$value))
              {
                  
          # dann gib aus
                  
          print $value.'<br />';
              }


          was ist falsch an meiner denkweise?

          auf jeden fall schon mal ein grosses danke an dich.

          Kommentar


          • #6
            was steht in $value?

            Kommentar


            • #7
              in $value hab ich eine liste mit url's.

              von dieser liste möchte ich nur url's haben die so aussehen:

              www.kanotix.com (ist mein lieblingslinux )
              kanotix.com

              alles andere soll weg. zum beispiel solche:

              kanotix.mipooh.net
              ftp.lug.ro

              also alles was mit www. oder ohne anfängt und mit de, net oder com endet. es sollen auch keine url's für gut befunden werden die diese art haben kanotix.mipooh.net (also mit doppel-punkt)

              ich hoffe du verstehst mich.

              Kommentar


              • #8
                Na, dann setzten wir dein gewünschtes doch mal stück für Stück um:

                also alles was mit www. oder ohne anfängt
                na, "www" nehmen wir mal als string, der 0 oder einmal vorkommen muss. das solltest du mit tut hinbekommen.

                und mit de, net oder com endet.
                hasse ja schon.

                es sollen auch keine url's für gut befunden werden die diese art haben kanotix.mipooh.net (also mit doppel-punkt)
                auch das ist doch kein problem. zeichen von a-z und "-" kannst du mittels Tut definieren.

                (.*)(.*)
                Was du dir dabei gedacht hast?

                BTW: Punkte solltest du escapen!

                Kommentar


                • #9
                  ich werd es mit api machen.

                  danke das du deine zeit für mich geopfert hast.
                  Zuletzt geändert von Malaga; 19.06.2005, 22:22.

                  Kommentar


                  • #10
                    Abgesehne davon, dass du es nun wirklich schon 10 mal fertig heben müsstest, nach den Tipps, die ich dir gegeben habe,

                    ist dieses Thema hiermit beendet, weil du gegen die AGB von Google verstößt.

                    Kommentar


                    • #11
                      Schlauer Edit! Alles andere wäre in einem öffentlichen Forum auch nur dumm gewesen...

                      Kommentar

                      Lädt...
                      X