-
05.02.12 21:16 #16
- Registriert seit
- May 2007
- Ort
- Dresden (Sachsen)
- Beiträge
- 1.961
Was willst du denn mit dem Ausrufezeichen erreichen? Ansonsten: erster Wert im Array: das Zeichen, zweiter Wert im Array: 0 => Kleinbuchstabe, 1 => Großbuchstabe, 2 => Ziffer
Ich mag:- positive Bewertungen meiner Beiträge
- ein Danke für meine hilfreichen Beiträge
Dabei kann ich dir helfen: PHP --- Javascript --- Ruby --- Coffeescript --- CSS --- HTML --- Webtechnologien --- Shell --- UNIX
... noch was: falls du mit dem Thema hier fertig bist, dann kannst du es auch als erledigt markieren.
-
Also nehmen wir an der User hat "Bmw50!0Ps" eingegeben.
Dann soll folgendes passieren:
B -> Ordner 1 -> B.png
m -> Ordner 2 -> m.png
w -> Ordner 2 -> w.png
5 -> Ordner 1 -> 5.png
0 -> Ordner 1 -> 0.png
!0 -> Ordner 2 -> 0.png // Wenn möglich soll das Skript hier erkennen das diese Null (wegen dem Ausrufezeichen davor) ein "kleiner Buchstabe" ist sozusagen.
P -> Ordner 1 -> P.png
s -> Ordner 2 -> s.png
Oder gibt es noch eine andere Möglichkeit das "automatisch" erkannt wird das die "0" aus einem anderen Verzeichnis geladen werden soll?
-
Was soll das bringen, Zahlen zu unterscheiden****?
Du willst doch hoffentlich nicht die Bilder für Zahlen bis 10.000 anfertigen und abspeichern?
Klein- und Großbuchstaben sind verständlich, aber kleine Zahlen****
€: wieso zensiert der zwei-, drei- und vierfaches Fragezeichen
Geändert von Lime (05.02.12 um 21:26 Uhr)
-
05.02.12 21:33 #19
- Registriert seit
- May 2007
- Ort
- Dresden (Sachsen)
- Beiträge
- 1.961
Du könntest sagen, dass jede zweite Null oder jede letzte Null als kleine Null dargestellt werden soll, aber wenn es dafür keine Regeln gibt, dann musst du das beispielsweise mit deinem Ausrufezeichen lösen.
Ich mag:- positive Bewertungen meiner Beiträge
- ein Danke für meine hilfreichen Beiträge
Dabei kann ich dir helfen: PHP --- Javascript --- Ruby --- Coffeescript --- CSS --- HTML --- Webtechnologien --- Shell --- UNIX
... noch was: falls du mit dem Thema hier fertig bist, dann kannst du es auch als erledigt markieren.
-
Was das bringen soll?
Einfaches Beispiel:
Die Grafiken in Ordner 1 sind Blau.
Die Grafiken in Ordner 2 sind Rot.
Und der User soll ja dann entscheiden welche Farbe der Buchstabe oder die Zahl haben soll.
Kannst du deinen Code nicht um diese Eigenschaft erweitern?
-
05.02.12 21:49 #21
- Registriert seit
- May 2007
- Ort
- Dresden (Sachsen)
- Beiträge
- 1.961
Code PHP:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
$var = 'Bmw500PS'; $pattern = '/([a-z])|([A-Z])|(![0-9])|([0-9])/'; if(preg_match_all($pattern, $var, $matches) !== false) { $count = count($matches[0]); foreach($matches[0] as $i => $letter) { # Kleinbuchstabe if(!empty($matches[1][$i])) { $result[] = array($letter, 0); # Großbuchstabe } elseif(!empty($matches[2][$i])) { $result[] = array($letter, 1); # Ziffer mit Ausrufezeichen davor } elseif(!empty($matches[3][$i])) { $result[] = array(substr($letter, 1), 2); # einfache Ziffer } else { $result[] = array($letter, 3); } } } else { $result = array(); }
Ich mag:- positive Bewertungen meiner Beiträge
- ein Danke für meine hilfreichen Beiträge
Dabei kann ich dir helfen: PHP --- Javascript --- Ruby --- Coffeescript --- CSS --- HTML --- Webtechnologien --- Shell --- UNIX
... noch was: falls du mit dem Thema hier fertig bist, dann kannst du es auch als erledigt markieren.
-
Super jetzt geht es!
Danke!PHP-Code:Array
(
[0] => Array
(
[0] => B
[1] => 1
)
[1] => Array
(
[0] => m
[1] => 0
)
[2] => Array
(
[0] => w
[1] => 0
)
[3] => Array
(
[0] => 5
[1] => 2
)
[4] => Array
(
[0] => 0
[1] => 3
)
[5] => Array
(
[0] => 0
[1] => 3
)
[6] => Array
(
[0] => P
[1] => 1
)
[7] => Array
(
[0] => S
[1] => 1
)
)

Jetzt muss ich nur noch herausfinden wie ich die Verzeichnisse damit lenke.
-
Hallo, ich hätte da noch eine Frage zu deinem Code.

Ich habe es nun so gemacht das in deinem Code eine neue Variable erstellt wird mit einem Teil-Pfad.
Beispiel:
Wie kann ich denn jetzt "$Teil_Pfad" richtig verwenden? Mit $result geht es nicht.PHP-Code:# Kleinbuchstabe
if(!empty($matches[1][$i])) {
$result[] = array($letter, $Teil_Pfad = 'arial_font_bold';);
}
# Großbuchstabe
elseif(!empty($matches[2][$i])) {
$result[] = array($letter, $Teil_Pfad = 'arial_font_normal';);
}
-
07.02.12 23:15 #24
- Registriert seit
- May 2007
- Ort
- Dresden (Sachsen)
- Beiträge
- 1.961
Was willst du denn damit erreichen? Sollen die Zeichenkette konkatiniert werden oder soll $Teil_Pfad der Schlüssel von den Werten sein?
Ich mag:- positive Bewertungen meiner Beiträge
- ein Danke für meine hilfreichen Beiträge
Dabei kann ich dir helfen: PHP --- Javascript --- Ruby --- Coffeescript --- CSS --- HTML --- Webtechnologien --- Shell --- UNIX
... noch was: falls du mit dem Thema hier fertig bist, dann kannst du es auch als erledigt markieren.
-
Ich raff das ganze einfach überhaupt nicht. Ich versuche es mal zu erklären in einfachen Worten.
1. User gibt etwas in ein Formular ein und schickt es ab
2. Das Skript muss nun die Eingabe des User Zeichen für Zeichen einer Schriftart zuordnen
3. Die Grafiken werden in einer Schleife erstellt und dann in eine größere Grafik gespeichert
4. Fertig
In meinem "Anfänger-Skript" habe ich so etwas wie eine "Verzeichniss-Ebene" erstellt.
Ich möchte nun das Skript erweitern so das jedes Zeichen in der Variable seinen eigenen Pfad bekommt.PHP-Code:Die Variable "$pfad_font" wird bisher durch eine ganz einfach IF-Abfrage ausgesucht.
Sind mehr als 5 Zeichen in der Variable dann "Arial_Font_Normal" sonst "Arial_Font_Bold".
$Pfad_1 = './';
$Pfad_2 = 'images/';
$Pfad_3 = 'sig';
$Pfad_4 = $pfad_font;
$format = '.png';
Später im Skript wenn die Grafiken geladen werden (imagecreate...) sollen die Grafiken individuell (nicht starr wie jetzt) geladen werden können.
Bei Bedarf stell ich mal einen 1:1 Code zur Verfügung.
-
07.02.12 23:30 #26
- Registriert seit
- May 2007
- Ort
- Dresden (Sachsen)
- Beiträge
- 1.961
Um ehrlich zu sein: ein klarer Fall für Klassen. Aber das mach' ich morgen.
Ich mag:- positive Bewertungen meiner Beiträge
- ein Danke für meine hilfreichen Beiträge
Dabei kann ich dir helfen: PHP --- Javascript --- Ruby --- Coffeescript --- CSS --- HTML --- Webtechnologien --- Shell --- UNIX
... noch was: falls du mit dem Thema hier fertig bist, dann kannst du es auch als erledigt markieren.
-
Klassen? Ist das wieder etwas neues?
Hier mal das Skript aber sehr stark vereinfacht, da es sonst viel zu unübersichtlich ist.
PHP-Code:// ### Variable usw. ### //
$U_Eingabe = "BMW500PX";
$U_Eingabe = htmlspecialchars($U_Eingabe, ENT_QUOTES);
$U_Eingabe = htmlspecialchars($U_Eingabe);
// ### Grundeinstellungen ### //
$format = '.png';
// ### Prüfen ob leer ### //
if (strlen($U_Eingabe) == '0') {
unset($U_Eingabe);
echo '<div style="text-align:center; font-weight:bold;">Error</div><br />';
}
// ### Zeichen zählen ### //
$Zeahlen = strlen($U_Eingabe);
// ### Schrift auswählen (Starr) ### //
if ($Zeahlen < 5) {
$Schrift = 'Arial_Font_Normal';
}
else
{
$Schrift = 'Arial_Font_Bold';
}
// ### Verzeichniss-Ebene ### //
$Pfad_1 = './';
$Pfad_2 = 'images/';
$Pfad_3 = 'sig';
$Pfad_4 = $Schrift;
// ### Verzeichniss Zusammenfassem ### //
$Pfad_complete = $Pfad_1.$Pfad_2.$Pfad_3.$Schrift;
// ### Grafiken erstellen ### //
for($j=0, $x = strlen($U_Eingabe); $j < $x; ++$j){
if(file_exists($Pfad_complete.$U_Eingabe[$j].$format){
$size = getimagesize($Pfad_complete.$U_Eingabe[$j].$format);
$im[] = array('img' => imagecreatefrompng($Pfad_complete.$U_Eingabe[$j].$format), 'sizex' => $size[0],);
$total_size_x +=$size[0];
}
}
// ### abschluss ### //
$image = imagecreatetruecolor($total_size_x, $size[1]);
$ac_x = 0;
foreach($im as $grafik){
ImageCopyResampled($imend, $grafik['img'], $ac_x, 0, 0, 0, imagesx($grafik['img']), imagesy($grafik['img']), imagesx($grafik['img']), imagesy($grafik['img']));
$ac_x+= $grafik['sizex'];
}
imagepng($image);
-
08.02.12 00:06 #28
- Registriert seit
- May 2007
- Ort
- Dresden (Sachsen)
- Beiträge
- 1.961
Ich mag:- positive Bewertungen meiner Beiträge
- ein Danke für meine hilfreichen Beiträge
Dabei kann ich dir helfen: PHP --- Javascript --- Ruby --- Coffeescript --- CSS --- HTML --- Webtechnologien --- Shell --- UNIX
... noch was: falls du mit dem Thema hier fertig bist, dann kannst du es auch als erledigt markieren.
-
Das ist mir zu hoch.

Vielleicht bin ich aber auch einfach zu müde.
-
08.02.12 13:08 #30
- Registriert seit
- May 2007
- Ort
- Dresden (Sachsen)
- Beiträge
- 1.961
Meine Lösung würde jetzt so aussehen:
Code PHP:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152
<?php class FontException extends Exception {} class Font { private static $fonts = array(); private $name = ''; private $weight = ''; private $directory = ''; private $letters = array(); public $format = 'png'; public static function get($name, $weight = null, $directory = null) { if($weight === null) { $weight = 'normal'; } if(self::$fonts === array()) { if($directory === null) { throw new FontException('directory required'); } self::$fonts[] = new Font($name, $weight, $directory); return end(self::$fonts); } else { foreach(self::$fonts as $font) { if(($font->name === $name) && ($font->weight === $weight)) { return $font; } } if($directory === null) { throw new FontException('directory required'); } self::$fonts[] = new Font($name, $weight, $directory); return end(self::$fonts); } } private function __construct($name, $weight, $directory) { if(!is_string($name) || !is_string($name) || !is_string($directory) || empty($name) || empty($weight) || empty($directory)) { throw new FontException('invalid arguments'); } elseif(!file_exists($directory) || !is_dir($directory)) { throw new FontException('directory >>' . $directory . '<< does not exist'); } $this->name = strtolower($name); $this->weight = strtolower($weight); $this->directory = $directory; } public function letter($letter) { if(isset($this->letters[$letter])) { return $this->letters[$letter]; } elseif(file_exists($this->__toString() . $letter . '.' . $this->format) || ($size = getimagesize($this->__toString() . $letter . '.' . $this->format))) { switch($this->format) { case 'png': $this->letters[$letter] = array( imagecreatefrompng($this->__toString() . $letter . '.' . $this->format), $size, ); break; case 'jpeg': case 'jpg': $this->letters[$letter] = array( imagecreatefromjpeg($this->__toString() . $letter . '.' . $this->format), $size, ); break; case 'gif': $this->letters[$letter] = array( imagecreatefromgif($this->__toString() . $letter . '.' . $this->format), $size, ); break; default: throw new FontException('invalid image format'); } } else { throw new FontException('could not find the file for the character "' . $letter . '"'); } } public function __toString() { return $this->directory . '/' . ucfirst($this->name) . '_Font_' . ucfirst($this->weight); } } if(isset($_POST['images']['submit'])) { try { if(($length = strlen($input = trim($_POST['images']['text']))) === 0) { throw new Exception('invalid input'); } if($length < 5) { $font = Font::get('arial', null, './images/sig'); } else { $font = Font::get('arial', 'bold', './images/sig'); } # set format of the character files $font->format = 'png'; $letters = str_split($input); $size = array(0, 0); foreach($letters as $i => $letter) { $letters[$i] = $letter = $font->letter($letter); $size[0] += $letter[0][0]; $size[1] = ($letter[0][1] > $size[1]) ? $letter[0][1] : $size[1]; } $image = imagecreatetruecolor($size[0], $size[1]); $position_x = 0; $imend; # hast du irgendwo definiert foreach($letters as $letter) { imagecopyresampled($imend, $letter[0], $position_x, 0, 0, 0, $letter[0][0], $letter[0][1], $letter[0][0], $letter[0][1]); $position_x += $letter[0][0]; } header('Content-Type: image/png'); imagepng($image); } catch(Exception $e) { ?> <!DOCTYPE html> <html> <head> <title>Fehler aufgetreten</title> </head> <body> <div style="border:3px solid red"><?php echo $e->getMessage(); ?></div> </body> <?php } } else { ?> <!DOCTYPE html> <html> <head> <title>Bild erstellen</title> </head> <body> <form id="images" method="post" action=""> <label for="images-text"><input id="images-text" name="images[text]" type="text" /><br /> <input id="images-submit" name="images[submit]" type="submit" value="erstellen" /> </form> </body> <?php } ?>
Ich mag:- positive Bewertungen meiner Beiträge
- ein Danke für meine hilfreichen Beiträge
Dabei kann ich dir helfen: PHP --- Javascript --- Ruby --- Coffeescript --- CSS --- HTML --- Webtechnologien --- Shell --- UNIX
... noch was: falls du mit dem Thema hier fertig bist, dann kannst du es auch als erledigt markieren.
Ähnliche Themen
-
Grafiken laden lange, trotz in Resources enthalten
Von i123 im Forum .NET Grafik und SoundAntworten: 7Letzter Beitrag: 12.05.10, 18:56 -
Grafiken laden
Von Len-ni im Forum C/C++Antworten: 5Letzter Beitrag: 16.01.08, 19:30 -
Grafiken aus Cache laden....
Von bernhardp im Forum HTML & XHTMLAntworten: 1Letzter Beitrag: 21.06.05, 11:12 -
Grafiken im Hintergrund laden
Von NoGi im Forum HTML & XHTMLAntworten: 1Letzter Beitrag: 23.04.03, 11:44 -
Bei mouse over 2 Grafiken laden...
Von Oxygen im Forum Javascript & AjaxAntworten: 13Letzter Beitrag: 26.02.02, 13:55



33Danke


Zitieren

Login






[PHP][Snippet] Array zu XML konvertieren