am Ende der Zeichenfolge nicht in Browser sichtbar Ampersand
Frage
Ich bin eine Zeichenkette wie unten
druckenCode:
echo "&words=".$rs['pw']."&";
Ausgabe:
& words = Hilfe | Gut
Beachten Sie, dass der letzte &
nicht gedruckt wird.
Aber wenn ich fügen Sie ein Leerzeichen nach &
dann wie unten
Code:
echo "&words=".$rs['pw']."& ";
Ausgabe:
& words = Hilfe | Good &
Jetzt &
gedruckt wird.
Warum sein Vorkommnis und was ist der Grund für dieses Verhalten?
Lösung
Wenn Sie es auf einen Web-Browser sind Ausgeben Sie die & mithilfe von &
wurden entkommen sollten „&“ in HTML verwendet wird vielen Strings zu entkommen, und in URLs so ist ein spezielles Zeichen, wie <> usw.
Andere Tipps
Wenn Sie es in einer Web-Seite sind ausgegeben wird, dann wird der Browser &
besondere interpretieren. Wählen Sie bei „Quelltext anzeigen“ in Ihrem Browser, und Sie werden die Roh-Ausgabe. Wenn Sie es brauchen in einem HTML-Kontext erscheinen, werden Sie die Zeichenfolge durch htmlspecialchars
vor dem Drucken es passieren müssen. Also:
$rs['pw'] = "Help|Good";
echo htmlspecialchars("&words=".$rs['pw']."&");
Dieser Code funktioniert für mich
$rs['pw'] = "Help|Good";
echo "&words=".$rs['pw']."&";
Output
& words = Hilfe | Good &
Was mich zu einer Frage führt: Was ist der Kontext? Wo ist dieser Code ausgegeben werden Sie es auf einem Webserver ausgeführt wird und in einem Browser angezeigt? Gibt es keinen anderen Code beteiligt, dass kann die Ursache sein?
Wenn der Kontext etwas ist wie in HTML ausgegeben wird, dann müssen Sie sicherstellen, dass es an der richtigen Stelle ist. In HTML Ampersand ist etwas Besonderes und man sollte es entkommen. In der Regel das bedeutet in &
übersetzen