Kaufmännisches problem in XML beim erstellen einer URL-Zeichenfolge
Arbeite ich mit einer XML-feed, der hat, als eine von Knoten, eine URL-Zeichenfolge, die der folgenden ähnelt:
http://aflite.co.uk/track/?aid=13414&mid=32532&dl=http://www.google.com/&aref=chris
Ich verstehe, dass kaufmännisches und verursachen eine Menge Probleme in XML und sollte maskiert werden, indem &
statt einer nackten &
. Ich bin daher geändert, das php-wie folgt:
<node><?php echo ('http://aflite.co.uk/track/?aid=13414&mid=32532&dl=http://www.google.com/&aref=chris'); ?></node>
Jedoch, wenn diese generiert den XML-feed, der string wird mit der vollen &
und so ist die eigentliche URL nicht funktioniert. Entschuldigt, wenn dies ist ein sehr grundlegendes Missverständnis, aber eine gewisse Orientierung wäre toll.
Habe ich auch versucht, mit Hilfe %26
statt &
aber noch immer das gleiche problem.
&
korrekt ist. Wenn der parser ist nicht die Dekodierung, wenn es konvertiert die XML-Knoten-Wert in einen string, dann der parser ist kaputt und Sie brauchen, um zu beheben, und nicht die XML.mögliche Duplikate von "Entfernen" & aus der string wird beim schreiben in xml in PHP
Sollten Sie nicht erstellen Sie XML mit einfachen
echo
Aussagen. Verwenden Sie stattdessen entweder SimpleXML oder XMLWriter: Sie alle kümmern sich um das schmutzige details für Sie.InformationsquelleAutor Chris | 2011-06-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie etwas einfügen in XML/HTML sollten Sie immer die htmlspecialchars Funktion. dies wird Flucht die Saiten in die richtige XML-syntax.
aber Sie in ein zweites problem.
Sie haben Hinzugefügt eine zweite url zu der ersten.
diese müssen auch entkam in die url-syntax.
für diese müssen Sie verwenden urlencode.
htmlspecialchars()
auf einen string, der hat schon&
entkommen, er werde am Ende mit einem double-Escape-string.ja, seine Beispiele code funktioniert nicht. korrigiert habe ich mein Beispiel als ich sah, dass die zweite url angehängt.
Sie aktualisiert haben, die Antwort, das ist gut; nicht mehr doppelt zu entkommen. Aber interessanterweise habe ich beachten Sie die
urlencode()
Teil, die Sie Hinzugefügt haben: es gibt nichts in der ursprünglichen Frage, die angibt, dassaref=chris
ist Teil der google-URL, anstatt ein weiteres argument der Haupt-URL. Wenn es so ist, dann Ihre Antwort ist gut und erklärt auch, warum es nicht funktioniert für ihn, trotz der Flucht. Es gibt jedoch noch ein problem, wennaref=chris
ist Teil der google-URL, dann muss vorangestellt werden, ein Fragezeichen, anstatt ein kaufmännisches und-Zeichen, sowie führen Sie durchurlencode()
.ja, du hast Recht. &ahref nicht Teil der google-url. das google eine url enthalten, die jeder char braucht er in seiner url. dies beinhaltet auch eine ?.
+1. Ich werde Stimmen du sowieso, aber da gibt es einige gute Punkte angesprochen hier, die ich nicht in meiner Antwort. 🙂
InformationsquelleAutor Bernd Ott
&
ist richtig für die Flucht kaufmännische und-Zeichen in einem XML-Dokument. Das Beispiel, das Sie gegeben haben sollte arbeiten.Du behaupten, dass es nicht funktioniert, aber Sie haben nicht angegeben, welche Anwendung Sie verwenden, oder in welcher Weise es funktioniert nicht. Was genau passiert, wenn Sie auf den link klicken? Tun die
&
strings am Ende in der browser-URL-Feld? Wenn das der Fall ist, es klingt wie ein Fehler in der software haben Sie die Anzeige der XML mit. Haben Sie versucht, Blick auf die XML-Datei in einer anderen Anwendung, um zu sehen, wenn das problem konsistent ist?Antwort den letzten Teil Ihrer Frage:
%26
wäre definitiv keine Arbeit für Sie-das wäre das, was Sie verwenden würden, wenn Sie Ihr URL-Parameter erforderlich, um kaufmännische und-Zeichen enthalten. Sagen Sie zum Beispiel, inaref=chris
wenn der namechris
wurden, um ein kaufmännisches und-Zeichen (lets sagen, dass der username warchris&bob
), dann das kaufmännische und-Zeichen werden müsste, entgingen mit%26
so, dass die URL-parser nicht sehen, wie der Start einer neuen URL-parameter.Hoffe, das hilft.
InformationsquelleAutor Spudley