Sp33dy G0nz4l3s: $image[1] = $explode - Warum geht das nicht?

Hi, ich benutze folgenden Code:

preg_match("|{(.*?)}|", $row['beschreibung'], $image);
echo $image[1];
$image[1] = $explode;
echo $explode;

Zuerst einmal sucht preg_match nach z.B. dem hier:
{c,g,j}

echo $image[1]; gibt dann das hier aus: c,g,j
wenn ich jedoch folgendes schreibe:
$image[1] = $explode;
echo $explode;
Dann gibt der Browser für $explode {c,g,j} aus.

Könnt ihr mir sagen warum er das machen eigentlich sollte doch nur c,g,j dastehen.

Hoffe, das mir jemand helfen kann.
Gruß Marc

  1. Hi,

    preg_match("|{(.*?)}|", $row['beschreibung'], $image);

    dass die geschweiften Klammern Sonderzeichen sind, ist Dir bewusst?

    wenn ich jedoch folgendes schreibe:
    $image[1] = $explode;
    echo $explode;
    Dann gibt der Browser für $explode {c,g,j} aus.
    Könnt ihr mir sagen warum er das machen eigentlich sollte doch nur c,g,j dastehen.

    Nein, das Script sollte exakt das ausgeben, was vor dem Code bereits in $explode stand. Diesen Wert veränderst Du schließlich nirgendwo.

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
  2. Servus,

    Dann gibt der Browser für $explode {c,g,j} aus.

    Das ist allerdings eigenartig. Eigentlich sollte er 'Notice: Undefined variable: explode in [...]' ausgeben. (Du möchtest zur Entwicklung error_reporting auf E_ALL setzen, sowie display_errors auf 'on'.) Zumindest verschweigst du uns in deinem Code-Auszug die Initialisierung von $explode.

    $image[1] = $explode;

    Wolltest du hier vielleicht
    $explode = $image[1];
    schreiben? Und wenn ja, warum dieser unnötige Zwischenschritt?

    Gruss
    Patrick

    --
    sh:( fo:| ch:? rl:( br:> n4:( ie:% mo:) va:} de:> zu:) fl:| ss:| ls:[ js:|
  3. Danke euch habe es jetzt hinbekommen! Ich habe jedoch noch eine Frage. Mir ist nicht ganz klar warum das so ist:

      
    $beschreibung = $row['beschreibung'];  
    preg_match_all("|{(.*?)}|", $beschreibung, $image);  
    foreach($image['1'] as $value){  
    $img_array = GetImageSize("bilder/".$value.".jpg");  
    $bildstring = "<img src=\"bilder/".$value.".jpg\"".$img_array['3']." />";  
    $muster = "|{".$value."}|";  
    $beschreibung = preg_replace($muster, $bildstring, $beschreibung);  
    }
    

    So funktioniert alles perfekt. Davor hatte ich es jedoch so stehen:

      
    preg_match_all("|{(.*?)}|", $row['beschreibung'], $image);  
    foreach($image['1'] as $value){  
    $img_array = GetImageSize("bilder/".$value.".jpg");  
    $bildstring = "<img src=\"bilder/".$value.".jpg\"".$img_array['3']." />";  
    $muster = "|{".$value."}|";  
    $beschreibung = preg_replace($muster, $bildstring, $row['beschreibung']);  
    }
    

    Von drei Bildern. Z.B. {a}{b}{c} Wurde immer nur das letzte (c) angezeigt. $row['beschreibung'] kommt aus einer Datenbank

    Könnt ihr mir sagen warum es bei der ersten Variante ging und bei der zweiten nur das letzte Bild angezeigt wurde?

    1. Hi!

      Von drei Bildern. Z.B. {a}{b}{c} Wurde immer nur das letzte (c) angezeigt.

      Deinem Codeausschnitt fehlen die wichtigen Teile.

      $row['beschreibung'] kommt aus einer Datenbank

      Und was ist darin enthalten? Ein String? Ein Array?
      Holst du deine Daten mit mysql_fetch_assoc() aus der Datenbank?
      Setzt du irgendwo eine Schleife ein, um die Ergebnisse zu holen?

      Schöner Gruß,
      rob

      1. Hi, darin enthalten ist eine Beschreibung von einem Cocktail (ich mache eine Seite über Cocktails):

        {c}{g}{k}
        <p><span>1 cl Sahne<br />
        4 cl Cream of Coconut<br />
        9 cl Ananassaft<br />
        4 cl Rum weiß<br /></span></p>

        Die Zutaten inklusive Eis im Shaker schuetteln.

        Aus der Datenbank lese ich die Informationen so:

          
        <?php  
        include ("cocktails/zugriff.inc.php");  
          
        $sql2 = "SELECT * FROM cocktails WHERE name='".mysql_real_escape_string(str_replace("_", " ", $_GET['cocktail'])).  
        "' ORDER BY name ASC";  
        $result2 = mysql_query($sql2);  
        $row = mysql_fetch_assoc($result2);  
          
        $title = "Cocktailz.de - ".$row['name'];  
        include ("header.inc.php");  
          
        //Images  
        $beschreibung = $row['beschreibung'];  
        preg_match_all("|{(.*?)}|", $beschreibung, $image);  
        foreach($image['1'] as $value){  
        $img_array = GetImageSize("bilder/".$value.".jpg");  
        $bildstring = "<img src=\"bilder/".$value.".jpg\"".$img_array['3']." />";  
        $muster = "|{".$value."}|";  
        $beschreibung = preg_replace($muster, $bildstring, $beschreibung);  
        }  
        ///Images  
        echo $beschreibung;