Grafiken laden, bearbeiten und in ein Magazin laden

PHP:
$pattern = '#(![A-Z0-9ÄÖÜ])|([A-Z0-9ÄÖÜ])|(@)#';
Da Du ja nur Großbuchstaben willst, habe ich mal den i-Modifier raus genommen.

Gruß
 
Hallo Zusammen. :)

Dank eurer super Hilfe habt ihr mir ja diesen Code erstellt damit die einzelnen Zeichen in der Variable eine eigene Schrift zugeordnet bekommen.

PHP:
$var1 = 'BMW50!0ps'; 
 
$pattern = '#(![A-Z0-9ÄÖÜ])|([A-Z0-9ÄÖÜ])|(@)#'; 
  
if(preg_match_all($pattern, $var1, $matches) !== false) { 
    $count = count($matches[0]); 
    foreach($matches[0] as $i => $zeahler) { 
        if(!empty($matches[1][$i])) { 
            $Arial_Font[] = 'Arial_Normal'; 
        } 
        elseif(!empty($matches[2][$i])) { 
            $Arial_Font[] = 'Arial_Bold'; 
        } 
        elseif(!empty($matches[3][$i])) { 
            $Arial_Font[] = 'hier_pfad_für_@'; // @ matches
        }
        else 
        { 
            $Arial_Font[] = 'Arial_Bold'; 
        } 
    } 
} 
else 
{ 
    $Arial_Font[] = array(); 
} 
  
echo '<pre>'; 
print_r( $Arial_Font ); 
echo '<pre>';

Der Code (oben) wird nur ausgeführt wenn der User die Option "Manuell" auswählt. Jetzt versuche ich die Option für "Autimatisch" zu basteln.

PHP:
if ($wunsch_font == 'Automatisch') {
   $Arial_Font = array();
   $Arial_Font = str_repeat($Arial_Font[] = 'Arial_Normal',$var1);
}

Mein Code funktioniert jedenfalls nicht. Der Code sollte eigentlichen bewirken das dann für jeden Buchstaben und für jede Zahl die "Arial_Normal" verwendet wird.
 
Zuletzt bearbeitet:
Das kann nicht funktionieren, da der erste Parameter von [phpf]str_repeat[/phpf] ein String sein muss, der wiederholt wird - nicht eine Anweisung!

Du könntest z.B. folgendes stattdessen nehmen:
PHP:
if ( $wunsch_font == 'Automatisch' )
{
  $Arial_Font = array();
  for ( $i=0; $i<$var; $i++ )
    $Arial_Font[] = 'Arial_Normal';
}
 
Ok ich habe die Lösung SELBER gefunden. ;) :D

PHP:
if ($wunsch_font == 'Automatisch') {
    $Arial_Font = array();
    for ($i=0; $i < strlen($var1); $i++)
    $Arial_Font[] = 'Arial_Normal';
}

Kann ich es eigentlich auch so machen?

PHP:
if ($wunsch_font == 'Automatisch') {
    $Arial_Font = array();
    for ($i=0; $i < strlen($var1); $i++) {
          $Arial_Font[] = 'Arial_Normal';
    }
}
 
Ich habe da noch eine Frage zu diesem Code.

PHP:
$var1 = 'BMW50!0ps'; 
 
$pattern = '#(![A-Z0-9ÄÖÜ])|([A-Z0-9ÄÖÜ])|(@)#'; 
  
if(preg_match_all($pattern, $var1, $matches) !== false) { 
    $count = count($matches[0]); 
    foreach($matches[0] as $i => $zeahler) { 
        if(!empty($matches[1][$i])) { 
            $Arial_Font[] = 'Arial_Normal'; 
        } 
        elseif(!empty($matches[2][$i])) { 
            $Arial_Font[] = 'Arial_Bold'; 
        } 
        elseif(!empty($matches[3][$i])) { 
            $Arial_Font[] = 'hier_pfad_für_@'; // @ matches
        }
        else 
        { 
            $Arial_Font[] = 'Arial_Bold'; 
        } 
    } 
} 
else 
{ 
    $Arial_Font[] = array(); 
} 
  
echo '<pre>'; 
print_r( $Arial_Font ); 
echo '<pre>';

Kann ich eigentlich auch den Code so erweitern das mehrere Pfade in verschiedene Arrays geladen werden? Oder kann das Probleme geben?

PHP:
$var1 = 'BMW50!0ps'; 
 
$pattern = '#(![A-Z0-9ÄÖÜ])|([A-Z0-9ÄÖÜ])|(@)#'; 
  
if(preg_match_all($pattern, $var1, $matches) !== false) { 
    $count = count($matches[0]); 
    foreach($matches[0] as $i => $zeahler) { 
        if(!empty($matches[1][$i])) { 
            $Arial_Font[] = 'Arial_Normal'; 
            $groesse[] = '64'; 
        } 
        elseif(!empty($matches[2][$i])) { 
            $Arial_Font[] = 'Arial_Bold'; 
            $groesse[] = '32'; 
        } 
        elseif(!empty($matches[3][$i])) { 
            $Arial_Font[] = 'hier_pfad_für_@'; // @ matches
            $groesse[] = '64'; 
        }
        else 
        { 
            $Arial_Font[] = 'Arial_Bold'; 
            $groesse[] = '32'; 
        } 
    } 
} 
else 
{ 
    $Arial_Font[] = array(); 
} 
  
echo '<pre>'; 
print_r( $Arial_Font ); 
echo '<pre>';
 
1) Wenn du mit foreach arbeitest, brauchst du $count nicht, das bräuchtest du nur für Forschleifen
2) Bei Schleifen und if kannst die die geschwungenen Klammern weglassen. Die Schleife/Bedindung gilt dann nur für die nächste Anweisung.
3) Das sollte eigentlich keine Probleme geben. Aber ich würde das ganze eigentlich mit Klassen lösen. Alternativ geht das dann auch mit Mehrdimensionalen Arrays (ist einfach schöner)

PHP:
$Font = array();
foreach($matches[0] as $i => $zeahler) {  
  $Font[$i]["pfad"] = 'Arial_Normal';
  $Font[$i]["groesse"] = 64; //Für Integer/Double (Zahlen) brauchst du keine Anfürhungszeichen
}
 
Danke für deinen Beitrag. :)

Das Problem ist wie ich dann später mit diesen Arrays weiter arbeiten kann. Mir gefallen die Mehrdimensionalen Arrays auch VIEL besser aber ich kann nun einmal nicht damit arbeiten. Also jetzt rein vom Wissen her. :D

Hier der weitere Code wo ich die erstellten Arays vewende:
PHP:
for($i=0; $i < strlen($var1); $i++) {
   $img1 = getimagesize("./images/sig/font/$Arial_Font[$i]/blue/$var1[$i].png");
}

Nehmen wir an ich würde ein Mehrdimensionalen Array erstellen. Wie müsste der Code dann hier aussehen?

Edit:

Arbeit dein Code ohne Pattern oder hast du das einfach ausgelassen?

PHP:
$var1 = 'BMW50!0ps'; 
 
$pattern = '#(![A-Z0-9ÄÖÜ])|([A-Z0-9ÄÖÜ])|(@)#';  

if(preg_match_all($pattern, $var1, $matches) !== false)
{ 
   $Font = array();
   foreach($matches[0] as $i => $zeahler) 
   {  
      $Font[$i]["pfad"] = 'Arial_Normal';
      $Font[$i]["groesse"] = 64
   }
}
 
Zuletzt bearbeitet:
Das habe ich aus Faulheitsgründen ausgelassen ;)
PHP:
//Mehrdimensionales Beispiel
$MyArray2D = array();
$MyArray2D[0]["Name"] = "Hans";
$MyArray2D[0]["Alter"] = 34;
$MyArray2D[0]["Beruf"] = "Lehrer";

$MyArray2D[1]["Name"] = "Peter";
$MyArray2D[1]["Alter"] = 42;
$MyArray2D[1]["Beruf"] = "Maurer";

foreach( $MyArray2D as $MyArray1D ){
  echo 'Hallo ich bin '. $MyArray1D["Name"].', '.$MyArray1D["Alter"].' Jahre alt. Mein Beruf: '.$MyArray1D["Beruf"].'<br />';
}
//Oder:
$size = sizeof($MyArray2D);
for( $i = 0; $i < $size; $i++ ){
  echo 'Hallo ich bin '. $MyArray2D[$i]["Name"].', '.$MyArray2D[$i]["Alter"].' Jahre alt. Mein Beruf: '.$MyArray2D[$i]["Beruf"].'<br />';
}
 
Zurück