Frage

Hallo, ich habe XML, die nicht bestätigt werden. Ich habe das Problem auf dieses Stück eingegrenzt:

<script type="text/javascript">document.getelementbyid("oxm-1f4a4485-5a1d-45f9-a989-9c65a0b9ceb6").src="http://bid.website.net/display?l=h4siaaaaaaaaad2nmq6cqbrenycw7qjyolfccxmregvcoae0u0sly_agtvaewwn4bg_havwbnebpvmzkkzra_kzzdvoloq4u-hjnp7sii0rxcbzz5vl5kxsrds6wtsfbxmcr9chysuhqbecuckb8cvx4m-pbcxugtdrll6d3dqtihnqukth2yvdkptr67cuzfvlxjlinkul9634lpal_h4mwhso8aabzhw1cdcwjxl6xivgv8agrjxjc_gaaaa==&p=h4siaaaaaaaaabxkmq7cmaxaurcqjjrrsfqqsrm7x3fsrwyvosda8qnj_3ojfgb49o45pblq7e80syzjhopggso9wyzpcpntzkxk1ldtbbi7otmxfj9da1wpjcf10vtxdj9e5_utyj19k2lfssepld5agnqaaaa=&url=http%3a%2f%2flocalhost%2fproject-debug%2fproject.html";</script>

Ich habe es in einen XML -Validator gestellt und es spuckte aus:

Diese Seite enthält die folgenden Fehler: Fehler in Zeile 1 in Spalte 16: EntityRef: Erwartung ';' ';

Alle Ideen, wo das Vermisste '; soll gehen? Gibt es ein anderes Problem?

War es hilfreich?

Lösung

Sie haben unablässige Verstärker und & in deiner URL. Sie müssen entweder (a) zu Charaktereinheiten geändert werden (&amp;) oder (b) in einem CDATA -Abschnitt eingeschlossen.

Mit einem CDATA -Abschnitt können Sie Sonderzeichen wie hinterlassen wie & unabgeordnet, das wäre also am einfachsten:

<script type="text/javascript">
// <![CDATA[
    document.getElementById(...).src="...";
// ]]>
</script>

Sie können alles, was Sie in einem CDATA -Abschnitt wollen, neben der genauen Zeichensequenz einfügen, die Sie wollen ]]>. Das // Kommentare sind da, um sicherzustellen, dass Browser, die die CDATA -Abschnitte nicht verstehen, die ignorieren <![CDATA[ und ]]> Markierungen.

JavaScript ist übrigens Fallempfindlichkeit. Das sollte sein getElementById nicht getelementbyid.

Andere Tipps

Das Ändern des Inhalts ist nicht immer möglich, z. B. wenn Sie eine Website abkratzen.

Sie können nicht nur str_replace '&' mit '&'

Hier ist ein Regex, der Verstärker und HTMLentiries für Verstärker ersetzen sollte, ohne gute HTMLEENTitäten zu brechen:

$html = preg_replace("|&([^;]+?)[\s<&]|","&amp;$1 ",$html);

Ich habe es benutzt, um ungefähr 700 Seiten ohne Probleme zu kratzen :)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top