PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Anführungszeichen in HTML-input-values



Qudus
06-03-2006, 00:16
hi

Ich habe folgendes Problem: Ich will dynamischen Inhalt mit PHP in einem HTML-input-textfeld anzeigen. Dieser Inhalt könnte möglicherweise auch Anführungszeichen (") enthalten aber auch Apostrophe ('). Ich habe aber keine Möglichkeit gefunden, das im value-Attribut anzugeben, ohne dass es invalides HTML wird und nicht der komplette String angezeit wird. Wenn ich den Text mit htmlSpecialChars encodiere, wird es zwar zu validem HTML aber es kommt dann auch ein " anstatt einem Anführungszeichen im Browser an und das ist inakzeptabel.

Das müsste ungefähr so aussehen:

<input type="text" name="bla" size="50" value="Dieser String steht in "Anführungszeichen"." />
oder so:

<input type="text" name="bla" size="50" value="Dieser String steht in \"Anführungszeichen\"." />

Kennt jemand einen Weg, das hinzubekommen? Geht das überhaupt?

Gruß, Qudus

CoolPolo
06-03-2006, 02:15
Hallo

Ich würde es so Lösen:



<input type='text' name='bla' size='50' value='Dieser String steht in "Anführungszeichen".' />


Du willst es mit PHP ausgeben, oder? (Bin nicht sicher ob ich die Frage richtig verstanden habe)


<?php

echo "<input type='text' name='bla' size='50' value='Dieser String steht in \"Anführungszeichen\".'>";

?>


MFG CoolPolo

Turbohummel
06-03-2006, 05:55
Also: das ' wurde in HTML nie definiert, die Browser könnens halt trotzdem, richtig is das hier:


<input type='text' name='bla' size='50' value='Dieser String steht in !&quot;Anführungzeichen!&quot;">
in PHP dann:

echo '<input type="text" name="bla" size="50" value="Dieser String steht in !&quot;Anführungzeichen!&quot;">'

Qudus
07-03-2006, 19:40
Vielen Dank für Eure Antworten. Leider habt Ihr etwas in meiner Frage übersehen. Ich will erstens die Möglichkeit haben, sowohl " als auch ' im Value zu haben. Das schließt Deine Lösung leider aus, CoolPolo. Die Möglichkeit mit dem &quot; habe ich ja auch schon alss nicht funktionstüchtig angegeben. Das ist zwar die empfohlene Lösung für XML aber in XHTML funktioniert es nicht (zumindest icht im Firefox). Da kommt - wie ich schon sagte - auch &quot; auf der Webseite an. Und ich will schon, dass er es dem Benutzer als " anzeigt.

Turbohummel
07-03-2006, 20:49
Hallo,

hast du den richtigen Zeichensatz angegeben? Weil bei mir funzt das.

Ansonsten hätte ich noch einen Workarround über javascript anzubieten, in etwa so:
getElementsByName('bla')[0].value = "textmit\"anführungszeichen\"";

jeebee
07-03-2006, 21:39
Vielen Dank für Eure Antworten. Leider habt Ihr etwas in meiner Frage übersehen. Ich will erstens die Möglichkeit haben, sowohl " als auch ' im Value zu haben. Das schließt Deine Lösung leider aus, CoolPolo. Die Möglichkeit mit dem &quot; habe ich ja auch schon alss nicht funktionstüchtig angegeben. Das ist zwar die empfohlene Lösung für XML aber in XHTML funktioniert es nicht (zumindest icht im Firefox). Da kommt - wie ich schon sagte - auch &quot; auf der Webseite an. Und ich will schon, dass er es dem Benutzer als " anzeigt.

also bei mir ists mit Firefox, &quot; im String, Doctype XHTML-1.0 Transitional und UTF-8 als Codierung kein Problem Anführungszeichen in einem Input-Feld darzustellen

Qudus
07-03-2006, 22:25
Ansonsten hätte ich noch einen Workarround über javascript anzubieten, in etwa so:
getElementsByName('bla')[0].value = "textmit\"anführungszeichen\"";

Ja, daran hatte ich auch schon gedacht. Aber an der Stelle sollte eigentlich kein Javascript nötig sein. Daher wollte ich das nur in allerletzter Instanz machen. Ich habe zwar an vielen Stellen Javascript verwendet, daher ist meine Seite sowieso schon darauf angewiesen (was auch nicht schlimm ist), aber an der Stelle finde ich das unsauber.


hast du den richtigen Zeichensatz angegeben? Weil bei mir funzt das.

Der Zeichensatz hat's gebracht. Ich hatte bisher immer ISO-8859-1 verwendet. Mit UTF-8 klappt's. Werde ich mit UTF-8 nicht Probleme mit Umlauten bekommen? Ich schreibe sie zwar schon immer nach Möglichkeit in HTML-Syntax aber es wäre unschön, wenn ich jetzt damit Probleme bekommen würde, wenn mal einer durchrutscht. Kennst Du Dich damit aus?

Qudus

Turbohummel
08-03-2006, 06:01
Ich nehme ja mal an dass du die Eingabefelder dynamisch füllst (z.B. mit PHP), in diesem falle erwischt du alle durch ein htmlentities().
Was das andere angeht: Probiers aus! Erfahrungsgemäß hat Firefox damit
Probleme, Opera und IE weniger.

jeebee
08-03-2006, 11:06
wenn du beim XHTML-Header den Zeichensatz (UTF-8) setzt

<?xml version="1.0" encoding="utf-8"?>
dann sollte es keine Probleme geben.