kostenloser Webspace werbefrei: lima-city


preg_match Pattern Unterschied (.+) und (.*) und (.*?)

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    gamesfun

    gamesfun hat kostenlosen Webspace.

    Was ist bei einem preg_match Pattern der Unterschied von (.+) und (.*) und (.*?)

    ... ich will alles innerhalb eines TAGs (hier
    <title>Bla blabla blahh</title>
    als Bsp) auslesen

    // --------- Test:1 --- mit (.+) ----
    preg_match ("/<title>(.+)<\/title>/siU", $html_content, $matches1);
    echo "<br />" . $matches1[0] . "\n"; 
    
    // --------- Test:2 --- mit (.*) ----
    preg_match ("/<title>(.*)<\/title>/siU",  $html_content, $matches2);
    echo "<br />" . $matches2[0] . "\n"; 
    
    // --------- Test:3 --- mit (.*?) ----
    preg_match ("/<title>(.*?)<\/title>/siU", $html_content, $matches3);
    echo "<br />" . $matches3[0] . "\n";


    alles 3 liefern das gleiche Ergebnis ? ...
    Bla blabla blahh


    ... was ist der Unterschied von (.+) und (.*) und (.*?) .... und welches davon soll nich nehmen ?



    Beitrag zuletzt geändert: 19.12.2012 17:18:47 von gamesfun
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. thomasba

    Co-Admin Kostenloser Webspace von thomasba

    thomasba hat kostenlosen Webspace.

    Ein
    .
    steht für ein beliebiges Zeichen.

    +
    Mindestens ein Zeichen, können aber auch mehrere sein
    ?
    Genau ein oder kein mal
    *
    Beliebig oft (auch keinmal)
    *?
    Beliebig oft, ist aber nicht gierig, matcht bei folgendem Beispiel nur
    Bla blabla blahh
    :
    <title>Bla blabla blahh</title> <title>Blubb</title>

    Ohne das Fragezeichen würde das matchen:
    Bla blabla blahh</title> <title>Blubb


    Beitrag zuletzt geändert: 19.12.2012 17:25:28 von thomasba
  4. Autor dieses Themas

    gamesfun

    gamesfun hat kostenlosen Webspace.

    ahhh ok, Danke

    also ist als Pattern

    "/<title>(.*?)<\/title>/si"

    quasi das gleiche wie
    "/<title>(.*)<\/title>/siU"


    beide sind "nicht gierig" ... (UNGREEDY)
    ... einmal durch das ? innerhalb des Pattern
    ... anderes mal durch das U als Pattern Modifier

    richtig?

    ... noch ne Frage zum Verständnis:

    preg_match()
    ... liefert immer nur ein Ergebis ... egal ob UNGREEDY oder "gierig"

    preg_match_all()
    ... kann auch mehrere Ergebnisse (im $matches Array) liefern ... wenn UNGREEDY

  5. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!