kostenloser Webspace werbefrei: lima-city


Teilstring zwischen zwei Markern austauschen ?

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    gamefun

    gamefun hat kostenlosen Webspace.

    Hallo erstmal,

    ich suche eine Lösung, wie ich mit PHP aus einem String
    einen bestimmten (unbekannten) Teil-String austauschen kann,
    der zwischen zwei Markierungen (links und rechts davon) steht.

    Das Problem ist, dass mind. einer dieser "Marker" im String mehrfach vorkommt
    also nur der linke Marker ist unique, aber der rechte wiederholt sich.

    BSP:

    $old_string = 'abcd efghij START1 blablabla ENDE klmno pqrst START2 lalalal ENDE uvwxyz';

    wie bekomme ich jetzt den Teil blablabla zu uiuiuiuiui, ohne dass das Script blablabla kennt
    dann wäre es ja einfach mit str_replace() .... aber so ?!

    jemand ne Idee? Danke!



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

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

  3. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    <?php
    header('Content-Type: text/plain');
    
    $pattern = '/START1(.*)ENDE/isU';
    $data = 'abcd efghij START1 blablabla ENDE klmno pqrst START2 lalalal ENDE uvwxyz';
    $text = preg_replace($pattern, 'START1 uiuiuiui ENDE', $data);
    echo($text);
    
    ?>
  4. Autor dieses Themas

    gamefun

    gamefun hat kostenlosen Webspace.

    Danke das funktioniert.

    habe mir noch ein bischen Infos zum Thema Pattern und "Reguläre Ausdrücke" zusammen-gegoogelt

    und noch die Frage dazu;

    was ist der Unterschied von :

    $pattern = '/START1(.*)ENDE/isU';

    und

    $pattern = '/START1(.*?)ENDE/is';

    beides funktioniert, aber was ist der Unterchied, welches sollte man (wann) verwenden?

    a) ob ich (.*?) verwende ohne den Modifier U (= nicht gierig)
    b) oder ob (.*) mit dem Modifier U verwende ?


  5. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    Der Unterschied:

    /START1(.*)ENDE/is
    findet
    START1 blablabla ENDE klmno pqrst START2 lalalal ENDE
    Gierig im Sinne von "möglichst langer Treffer"

    /START1(.*)ENDE/isU
    hingegen findet
    START1 blablabla ENDE
    Das U bwirkt das der kürzeste String gefunden wird.
  6. Autor dieses Themas

    gamefun

    gamefun hat kostenlosen Webspace.

    ok, soweit verstanden,

    und das ? in (.*?) macht genau das gleiche wie der Modifier U ?

    oder ist das noch was anderes ?!

  7. 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!