Kai: Suchmuster in String finden und ersetzen.

Beitrag lesen

Danke für die Reaktion. :-) Ich hatte es zwischenzeitlich wie folgt gelöst:

function checkForImages($str)
{
    $table = $param_db_prefix."_image";
    $alt   = "alt_".$_SESSION['lang'];

// Prüfe im gesamten String, ob Bilder vorkommen.
    $has_image = ereg("!.*.jpg|", $str);
    if ($has_image)
    {
        $pos_1        = strpos($str, ".jpg|"); // erstes Bild im String
  $prev_str     = substr($str, $str, $pos_1 + 7); // Erster String-Teil.
  $pos_2        = strpos($prev_str, "; // erstes Vorkommen des ::
  $pos_3        = strrpos($prev_str, ".jpg|"); // letztes Vorkommen des ::
  $image_name   = substr($prev_str, $pos_2 + 7, $pos_3 + 2 - $pos_2 - 5); // Name des Bildes
  $replace      = substr($prev_str, $pos_2, $pos_3 + 6 - $pos_2 + 1); // zu ersetzender Teil mit img-Tag
  // Prüfe, ob align = center, left oder right in diesem Teil-String.
  $image_center = ereg("[image:[0-9).*.jpg|c]", $prev_str);
  $image_left   = ereg("!.*.jpg|l]", $prev_str);
  $image_right  = ereg("!.*.jpg|r]", $prev_str);

$next_str = substr($str, $pos_1 + 7); // Rest-String
  $checked_text = checkForImages($next_str);

$query = "
                  SELECT
                      name,
                      $alt,
                      directory,
                      size
                  FROM
                      $table
                  WHERE
                      name = '$image_name'
                 ";
        $result = mysql_query($query);
        $row    = mysql_fetch_array($result);
        mysql_free_result($result);
  if($image_center == true)$align = "center";
  if($image_left == true)$align = "left";
  if($image_right == true)$align = "right";
        $alt = $row[$alt];
        $dir = $row['directory'];
        $size = $row['size'];
        // img-Tag, das an Stelle von ::xxxx.jpg|?:: eingesetzt werden soll.
        $img_src_str = "<img src="".$dir.$image_name."" align="".$align."" ".$size." alt="".$alt."">";

// Den neuen String zusammensetzen.
        $new_string = str_replace($replace, $img_src_str, $prev_str).$checked_text;
        $checked_text = $new_string;
    }
    else
    {
        $checked_text = $str;
    }
    return $checked_text;
}