• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Mittelschweres Problem mit IMG-Formatierung

Hesoyam

Neues Mitglied
BBCode modifizierung für IMG

Hallo,

ich möchte meinen IMG-Tag so umbauen, dass er wie folgt formatiert werden kann
[ img = %%TITEL%% ] %%IMGURL%% [ / img ]

Aber ich habe es bisher so:
[ img ] %%IMGURL%% [ / img ]

Kennt sich vlt. jmd hier etwas besser mit BBCodes aus?
ich kann auch gerne meine Funktion posten.

ich habe es bei url geschafft, aber wenn ich das so auf img anwenden will, dann haut es nicht hin.

Und wäre schon gut, wenn ich den Titel editieren könnte, weil derzeit steht er auf "Bild" ... und das ist naja, bescheiden ^^

Grüsse
Daniel

*EDIT
Ich weiss der Titel is unpassend, wollte Ihn ändern schaffs aber nicht, sry ....
 
Zuletzt bearbeitet:
Code:
/\[img=([^\]]+)\]([^\]]+)\[\/img\]/isU
ist allerdings noch anfällig fürs einschläusen von schadcode also bitte was für die sicherheit machen ^^

//Edit: das thema hat mich angespornt mal eben n bissel weiter zu gucken und hier das ist dabei rausgekommen... aber immernoch auf sicherheit achten ^^

Code:
/(?<=\[img=)(.+)\](.+)(?=\[\/img\])/iU

hab n benchmark drüber laufen lassen der erste ist auf jeden fall schneller ^^
 
Zuletzt bearbeitet von einem Moderator:
inwiefern meinst du das?

ok ... also deinen code versteh ich, aber der verträgt sich, denk ich mal, nicht ganz mit meinem script ^^
mom

PHP:
<?
function bbcode_images ($s) {
  global $allgAr;
  
  
  preg_match_all('/\[img\](http|https):\/\/([^\ \?&=\#\"\n\r\t<>]+)\.(gif|jpeg|jpg|png)\[\/img\]/Ui',$s,$imgRs);
  
    $max_breite = 470;
    if (isset($allgAr['allg_bbcode_max_img_width'])) {
    $max_breite = $allgAr['allg_bbcode_max_img_width'];
    }
  $endung = array (1 => 'gif', 2 => 'jpg', 3 => 'png');
  
  if ( isset ($imgRs[0][0]) ) {
    for($i=0;$i<count($imgRs[0]);$i++) {
        $imgstr = $imgRs[1][$i].'://'.$imgRs[2][$i].'.'.$imgRs[3][$i];
      $imgname = 'Bild';
      $size   = @getimagesize($imgstr);
            $breite = $neueBreite = $size[0];
      $hoehe  = $neueHoehe  = $size[1];
      $er     = '';
      if (isset($endung[$size[2]]) OR !is_array($size)) {
        $er = '<a href="'.$imgstr.'"><img width="'.$max_breite.'" style="border: none;" src="'.$imgstr.'" title="'.$imgname.'"  /></a>';
        if ( $breite > $max_breite ) {
          $neueHoehe  = intval($hoehe*$max_breite/$breite);
          $neueBreite = $max_breite;
          $er = '<a href="'.$imgstr.'"><img height="'.$neueHoehe.'" width="'.$neueBreite.'" style="border: none;" src="'.$imgstr.'" title="'.$imgname.'"  /></a>';
        }
      } 
      $s = str_replace($imgRs[0][$i],$er,$s);
    }
  }
  return($s);
}
?>

habe es mal versucht das preg_match_all zweimal reinzuhaun aber ich glaueb mich recht zu errinnern dass da ein fehler kam

was soll ich bzgl der sicherheit machen?
 
Zurück
Oben