Buchstaben gegen eine Grafik ersetzen

fotia1980

Mitglied
Hallo zusammen,

ich weiß nicht weiter...

ich bin gerade bei der Überarbeitung meiner Homepage.

Zur Zeit ist es so, dass ich die Sectionüberschrift als ganzes als PNG speichere (startseite.png) Hat den Nachteil, dass ich bei einer neuen Section auch eine neue Grafik erstellen muss.

Ich habe mir das jetzt so gedacht, da ich den Section-Namen in einer MySQL- Datenbank gespeichert habe, Buchstabe für Buchstabe gegen eine Grafik austausche.

Ich habe jetzt A.png - Z.png auf dem Server aber wie bekomme ich jetzt die Seite dazu, dass er mir meine Text-Überschrift (z.B. Startseite) in Grafik darstellt also:

S = S.png
t = T.png
a =A.png
....usw.

Die Besonderheit ist ,das die PNG-Dateien die Buchstaben jeweils von meiner Handschrift erstellt habe.

Das ist der Grund warum ich kein Script nutzen will das Text als Grafik darstellt.

Ich habe es mit diesem Script versucht, aber das funktioniert nicht.... es kommt keine Fehlermeldung, sondern er läd sich einen Wolf und hört einfach i-wann auf.

PHP:
						$abfrage = "SELECT * FROM L4U_Section";
						$ergebnis = mysql_query($abfrage);
						while($row = mysql_fetch_object($ergebnis))
							{
							if ($section == "$row->url")
								$row->name = eregi_replace('A','<img src="images/Letters/A.png" alt="$row->name">', $row->name);
								$row->name = eregi_replace('B','<img src="images/Letters/B.png" alt="$row->name">', $row->name);
								$row->name = eregi_replace('C','<img src="images/Letters/C.png" alt="$row->name">', $row->name);
								$row->name = eregi_replace('D','<img src="images/Letters/D.png" alt="$row->name">', $row->name);
								$row->name = eregi_replace('E','<img src="images/Letters/E.png" alt="$row->name">', $row->name);
								$row->name = eregi_replace('F','<img src="images/Letters/F.png" alt="$row->name">', $row->name);
								$row->name = eregi_replace('G','<img src="images/Letters/G.png" alt="$row->name">', $row->name);
								$row->name = eregi_replace('H','<img src="images/Letters/H.png" alt="$row->name">', $row->name);
								$row->name = eregi_replace('I','<img src="images/Letters/I.png" alt="$row->name">', $row->name);
								$row->name = eregi_replace('J','<img src="images/Letters/J.png" alt="$row->name">', $row->name);
								$row->name = eregi_replace('K','<img src="images/Letters/K.png" alt="$row->name">', $row->name);
								$row->name = eregi_replace('L','<img src="images/Letters/L.png" alt="$row->name">', $row->name);
								$row->name = eregi_replace('M','<img src="images/Letters/M.png" alt="$row->name">', $row->name);
								$row->name = eregi_replace('N','<img src="images/Letters/N.png" alt="$row->name">', $row->name);
								$row->name = eregi_replace('O','<img src="images/Letters/O.png" alt="$row->name">', $row->name);
								$row->name = eregi_replace('P','<img src="images/Letters/P.png" alt="$row->name">', $row->name);
								$row->name = eregi_replace('Q','<img src="images/Letters/Q.png" alt="$row->name">', $row->name);
								$row->name = eregi_replace('R','<img src="images/Letters/R.png" alt="$row->name">', $row->name);
								$row->name = eregi_replace('S','<img src="images/Letters/S.png" alt="$row->name">', $row->name);
								$row->name = eregi_replace('T','<img src="images/Letters/T.png" alt="$row->name">', $row->name);
								$row->name = eregi_replace('U','<img src="images/Letters/U.png" alt="$row->name">', $row->name);
								$row->name = eregi_replace('V','<img src="images/Letters/V.png" alt="$row->name">', $row->name);
								$row->name = eregi_replace('W','<img src="images/Letters/W.png" alt="$row->name">', $row->name);
								$row->name = eregi_replace('X','<img src="images/Letters/X.png" alt="$row->name">', $row->name);
								$row->name = eregi_replace('Y','<img src="images/Letters/Y.png" alt="$row->name">', $row->name);
								$row->name = eregi_replace('Z','<img src="images/Letters/Z.png" alt="$row->name">', $row->name);
								$row->name = eregi_replace('Ä','<img src="images/Letters/Ae.png" alt="$row->name">', $row->name);
								$row->name = eregi_replace('Ö','<img src="images/Letters/Oe.png" alt="$row->name">', $row->name);
								$row->name = eregi_replace('Ü','<img src="images/Letters/Ue.png" alt="$row->name">', $row->name);
								$row->name = eregi_replace('a','<img src="images/Letters/A.png" alt="$row->name">', $row->name);
								$row->name = eregi_replace('b','<img src="images/Letters/B.png" alt="$row->name">', $row->name);
								$row->name = eregi_replace('c','<img src="images/Letters/C.png" alt="$row->name">', $row->name);
								$row->name = eregi_replace('d','<img src="images/Letters/D.png" alt="$row->name">', $row->name);
								$row->name = eregi_replace('e','<img src="images/Letters/E.png" alt="$row->name">', $row->name);
								$row->name = eregi_replace('f','<img src="images/Letters/F.png" alt="$row->name">', $row->name);
								$row->name = eregi_replace('g','<img src="images/Letters/G.png" alt="$row->name">', $row->name);
								$row->name = eregi_replace('h','<img src="images/Letters/H.png" alt="$row->name">', $row->name);
								$row->name = eregi_replace('i','<img src="images/Letters/I.png" alt="$row->name">', $row->name);
								$row->name = eregi_replace('j','<img src="images/Letters/J.png" alt="$row->name">', $row->name);
								$row->name = eregi_replace('k','<img src="images/Letters/K.png" alt="$row->name">', $row->name);
								$row->name = eregi_replace('l','<img src="images/Letters/L.png" alt="$row->name">', $row->name);
								$row->name = eregi_replace('m','<img src="images/Letters/M.png" alt="$row->name">', $row->name);
								$row->name = eregi_replace('n','<img src="images/Letters/N.png" alt="$row->name">', $row->name);
								$row->name = eregi_replace('o','<img src="images/Letters/O.png" alt="$row->name">', $row->name);
								$row->name = eregi_replace('p','<img src="images/Letters/P.png" alt="$row->name">', $row->name);
								$row->name = eregi_replace('q','<img src="images/Letters/Q.png" alt="$row->name">', $row->name);
								$row->name = eregi_replace('r','<img src="images/Letters/R.png" alt="$row->name">', $row->name);
								$row->name = eregi_replace('s','<img src="images/Letters/S.png" alt="$row->name">', $row->name);
								$row->name = eregi_replace('t','<img src="images/Letters/T.png" alt="$row->name">', $row->name);
								$row->name = eregi_replace('u','<img src="images/Letters/U.png" alt="$row->name">', $row->name);
								$row->name = eregi_replace('v','<img src="images/Letters/V.png" alt="$row->name">', $row->name);
								$row->name = eregi_replace('w','<img src="images/Letters/W.png" alt="$row->name">', $row->name);
								$row->name = eregi_replace('x','<img src="images/Letters/X.png" alt="$row->name">', $row->name);
								$row->name = eregi_replace('y','<img src="images/Letters/Y.png" alt="$row->name">', $row->name);
								$row->name = eregi_replace('z','<img src="images/Letters/Z.png" alt="$row->name">', $row->name);
								$row->name = eregi_replace('ä','<img src="images/Letters/Ae.png" alt="$row->name">', $row->name);
								$row->name = eregi_replace('ö','<img src="images/Letters/Oe.png" alt="$row->name">', $row->name);
								$row->name = eregi_replace('ü','<img src="images/Letters/Ue.png" alt="$row->name">', $row->name);
								echo "<p align='center'>$row->name</p>";
							}
 
Lädt er beim Code, oder kann er die Grafiken beim Anzeigen nicht lesen?
ersetz mal dein echo durch
PHP:
echo htmlentities("<p align='center'>$row->name</p>");
Dann werden die Bilder nicht angezeigt, sondern der generierte Code und du siehst, ob das funktioniert

ps: Kopiere den Namen aus dem Objekt und bearbeite es nicht direkt...
 
Das selbe Ergebnis! Er hört einfach an der Stelle, wo der "eregi_replace" blog anfängt auf zu laden!

wenn ich den Blog, wo ich den Text bearbeite mit /* */ deaktiviere, dann zeigt er mir den Text an.

Das diese Umwandlung mit eregi_replace normalerweise funktioniert weiß ich, denn genau den selben Code nutze ich um auf der Seite die ASCII-Smileys in grafische umzuwandeln.

NACHTRAG: Nochwas ist mir aufgefallen, wenn ich nur das "S" ersetzen lasse und nicht das gesamte Alphabeth, dann klappt es, allerdings gibt er mir dann nicht mehr nur die eine Überschrift aus die passt, sondern alle!
 
Zuletzt bearbeitet:
Wird wahrscheinlich nicht die Lösung sein, aber mindestens ein Fehler.
Deien Strings sind in ' gesetzt und nicht in ". Somit werden se nicht geparst - sprich, der Inhalt von $row->name wird nicht in den String geschrieben

Code:
'<img src="images/Letters/A.png" alt="$row->name">'
//ersetze mit
"<img src='images/Letters/A.png' alt='{$row->name}'>"

Aber das ganze hast du eh viel zu kompliziert aufgebaut
Hier mal eine etwas kürzere Version:
PHP:
<?php
//Teststring
$text = "Foobar";

//Funktion um ein Buchstabe an den bestehenden html_String anzuhängen
function getGrafikForLetter($htmlstring, $letter){
    return $htmlstring."<img src='images/Letters/{$letter}.png' alt='{$letter}'>";
}

//Alle Buchstaben zu einem html-String mittels der Funktion getGrafikForLetter() zusammensetzen
$newText = array_reduce(str_split($text), 'getGrafikForLetter');

echo $newText;
?>
<!--  ergibt  -->
<img src='images/Letters/F.png' alt='F'><img src='images/Letters/o.png' alt='o'><img src='images/Letters/o.png' alt='o'><img src='images/Letters/b.png' alt='b'><img src='images/Letters/a.png' alt='a'><img src='images/Letters/r.png' alt='r'>
 
Hey super!

Ich habe es gleich mal mit deiner Variante Probiert und hat auf Anhieb geklappt. Aber jetzt habe ich ein Problem was ich vorher nicht beachtet habe ist, dass ich zum Teil auch "Leerschritte" (Spaces) in der Überschrift stehen habe, wie benenne ich denn hier die Datei?
 
einfach ein wenig erweitert.
1) Alle Buchstaben die ersetzt werden. Buchsteban die da nicht drin sind, werden direkt ausgegeben. in diesem Beispiel die Leerzeichen.
2) BSonderbuchstaben, deren Datei anderst heissen müssen


PHP:
//Teststring
$text = "Foobar mit Leerzeichen und ein ü";
//Erlaubte Buchstaben
$validLetters = str_split("abcdefghijklmnopqurstuvwäöüABCDEFGHIJKLMNOPQURSTUVWÄÖÜ");
//Buchsteben -> Dateinamenzuweisung für Sonderfälle
$letterReplace = array('ä'=>'ae', 'ö'=>'oe', 'ü'=>'ue', 'Ä'=>'AE', 'Ö'=>'OE', 'Ü'=>'UE');

//Funktion um ein Buchstabe an den bestehenden html_String anzuhängen
function getGrafikForLetter($htmlstring, $letter){
    if(in_array($letter, $GLOBALS['validLetters'])){
        if(array_key_exists($letter, $GLOBALS['letterReplace'])) $letter = $GLOBALS['letterReplace'][$letter];
        return $htmlstring."<img src='images/Letters/{$letter}.png' alt='{$letter}'>";
    }else{
        return $htmlstring.$letter;
    }
}

//Alle Buchstaben zu einem html-String mittels der Funktion getGrafikForLetter() zusammensetzen
$newText = array_reduce(str_split($text), 'getGrafikForLetter');

echo $newText;
 
Ok, das Problem habe ich jetzt selber gelöst, aber beu den Umlauten komme ich nicht weiter! Da diese im HTML und in der Datenbank als &auml& gespeichert werden, schreibt er mir das jetzt auch so aus :-D
 
Wie du willst (natürlich nicht ein Leerzeichen selbst).

PHP:
$row->name = eregi_replace('[space]','<img src="images/Letters/space.png" alt="$row->name">', $row->name);
Statt [space] musst du eben einen geeigneten RegEx finden.


Übrigens ist [phpf]eregi_replace[/phpf] veraltet, stattdessen könntest du z.B. [phpf]preg_replace[/phpf] nutzen.
 
@yaslaw
deine Variante funktioniert soweit echt gut! Nur werden die Umlaute nicht als ä ü ö gespeichert, sondern als HTML - also &auml; &uuml; und &ouml; deshalb komme ich mit der Variablen $validLetters nicht weit, da für das Script keine Umlaute zu finden sind. also ersetzt das Script a, u, m, l in Grafik und lässt & und ; als Text stehen.
 
Zurück