Micha K: String splitten

Hallo ihr,

mein Problem ist, ich möchte gerne einen String splitten, weiß aber nicht so genau wie ich das anstellen soll:

Ich habe ein Text mit bb code, sprich mir geht es um [img]*pfad*[/img]. Die [imgs]'s durch <img bla> zu ersetzen ist kein problem, nur möchte ich vorher die bildgröße anpassen. Dazu habe ich eine Funktion geschrieben die eine URL erwartet und dann den fertigen img-html code übergibt. Nur weiß ich nicht wie ich die url zwischen den [img] tags extrahieren, an die Funktion übergeben und den string ersetzen kann.

Hoffe mir kann wer helfen

Danke schon mal im Voraus
mfg micha

  1. Hallo,

    also das kann man eigentlich in einem schritt machen.

    deine funktion sieht ca. so aus:

    ... = preg_replace("...", "<img src="\1">", $var);

    dann machs doch einfach so
    ... = preg_replace("(.*?)...(.*?)", "\2", $var);

    alles was vor und nach dem img kommt steht in \1 bzw. \2 drin

    Ich hoffe das hilft weiter
    MFG
    Andavos

    --
    http://www.rpgcommunity.de/clanwissen/index.php Webdesign, PHP, Clan-Aufbau und mehr
    1. Hallo,

      also das kann man eigentlich in einem schritt machen.

      deine funktion sieht ca. so aus:

      ... = preg_replace("...", "<img src="\1">", $var);

      dann machs doch einfach so
      ... = preg_replace("(.*?)...(.*?)", "\2", $var);

      alles was vor und nach dem img kommt steht in \1 bzw. \2 drin

      Ich hoffe das hilft weiter
      MFG
      Andavos

      Danke für die Antwort, aber mein Prob ist, die Funtion rechnet mir die neue Bildgröße aus, muss doch deswegen ne Var an sie übergeben...

      also hier meine function:

      function resize_img($url)
      {
       $max_size = 430;
       $image_url = $url;
       $size = getimagesize($image_url,$info);
       if ($size[0] > $max_size)
        {
         $percent = $size[0] - $max_size;
         $percent = ($percent / $size[0]) * 100;
         $size_x = $max_size;
         $size_y = ($size[1] * $percent) / 100;
         $size_y = $size[1] - $size_y;
         $size[0] = $size_x;
         $size[1] = $size_y;
        }

      return "<img src="$image_url" width="$size[0]" height="$size[1]" border="0" align="absmiddle">";

      }

      hier wird bb code umgewandelt...:

      if (preg_match("/[img](.*?)[/img]/si",$text, $matches))
      {
         $text = preg_replace("/[img](.*?)[/img]/si",
                       resize_img($matches[1]), $text);
      }

      so das klappt auch alles, aber nur wenn es ein Bild im Text gibt. Wenn es 2 sind, sind die Bilder nachher identisch...

      mfg micha

      1. Hallo,
        sieht man dann das 1. Bild oder das letzte?

        aber mach es doch so

        du lässt deinen Text durch die funktion
        function bb_codes($text)
        {
        }

        laufen

        dann machst du folgendes in der Funktion

        $url = preg_replace("/(.*?)[img](.*?)[/img]|(.*?)/si","\2", $text);

        $max_size = 430;
         $image_url = $url;
         $size = getimagesize($image_url,$info);
         if ($size[0] > $max_size)
          {
           $percent = $size[0] - $max_size;
           $percent = ($percent / $size[0]) * 100;
           $size_x = $max_size;
           $size_y = ($size[1] * $percent) / 100;
           $size_y = $size[1] - $size_y;
           $size[0] = $size_x;
           $size[1] = $size_y;
          }

        $var_img = "<img src="$image_url" width="$size[0]" height="$size[1]" border="0" align="absmiddle">";

        $img_komplett = preg_replace("/[img](.*?)[/img]/si",$var_img, $text);

        Sollte glaub ich klappen

        Hatte das mal bei einem PHP Syntaxvorher und das klappt damit auch.

        P.S. Den den Variablen musst du nochmal gucken, ob alles so passt
        MFG
        Andavos

        --
        http://www.rpgcommunity.de/clanwissen/index.php Webdesign, PHP, Clan-Aufbau und mehr