String splitten
Micha K
- php
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
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
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
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