Moin!
Du meinst also einfach:
<input type="TEXT" name="upLandKfz" size="2" maxlength="2" value="'.$row["Land_Kfz"].'">
statt
<input type="TEXT" name="upLandKfz" size="2" maxlength="2" value='.$row["Land_Kfz"].'>
hätte genügt???
Aber natürlich!
Angenommen, der einzufügende String wäre "Ein Land".
Mit Variante 1 kommt raus: .... value=Ein Land>
"Land" wird vom HTML-Parser als eigenständiges, aber nirgendwo definiertes Attribut gewertet und ignoriert. Der value des Input-Feldes wird auf "Ein" gesetzt.
Variante 2 liefert: value="Ein Land">
Die Anführungszeichen begrenzen den Value-Wert, genauso wie bei allen anderen Attributen.
Grundsatzregel bei HTML: Attributwerte _müssen_ immer mit Anführungszeichen (entweder einfache ' oder doppelte ") umschlossen werden, wenn der Attributwert keine Zahl ist, Sonderzeichen enthält oder was anderes als eine einfache Buchstabenkette. Sie immer zu setzen, auch wenn man es theoretisch nicht muß, ist aber nicht falsch - also setze sie immer.
Das einzige, was dir jetzt noch passieren kann: In deinem Land-String ist ein Anführungszeichen " drin. Dann zerschießt es dir den HTML-Code natürlich auch.
Abhilfe: Die Ausgabe IMMER mit der Funktion htmlspecialchars() ausgeben:
echo "<input value='".htmlspecialchars($string)."' size='2'>";
Und als Anmerkung2: Nimm, wenn schon, dann preg_replace() und nicht ereg_replace() für reguläre Ausdrücke. Und zur simplen Stringersetzung ohne die Notwendigkeit von regulären Ausdrücken nimm bitte str_replace().
str_replace() wollte nicht funktionieren!
Funktionen haben im allgemeinen keinen eigenen Willen und verhalten sich auch nicht störrisch wie ein Esel. Wenn etwas nicht funktioniert, dann liegt in der Regel ein Programmierfehler vor.
- Sven Rautenberg