Seite 1 von 1

Brauche Hilfe beim Escapen

Verfasst: 16.09.2008 13:26
von Fennias Maxim
Ich möchte mit einem kleinen PHP-Script HTML und Java-Code ausgeben. Nur komme ich beim Escapen brutal durcheinander und es funktioniert nicht.

Code: Alles auswählen

	$ret ='<div style="padding: 3px; background-color: #313131; border: 1px dashed #B38E00; font-size: 1em;">
	<div style="text-transform: uppercase; border-bottom: 2px solid #B38E00; margin-bottom: 3px; font-size: 0.8em; font-weight: bold; display: block;">
		<span onClick="
		if (this.parentNode.parentNode.getElementsByTagName(\'div\')[1].getElementsByTagName(\'div\')[0].style.display != \'\') 
		{  
			this.parentNode.parentNode.getElementsByTagName(\'div\')[1].getElementsByTagName(\'div\')[0].style.display = \'\';
			this.innerHTML = \'<b>Spoiler: </b><a href=\'"#"\' onClick=\'"return false;"\'>ausblenden</a>\'; 
		} 
		else 
		{ 
			this.parentNode.parentNode.getElementsByTagName(\'div\')[1].getElementsByTagName(\'div\')[0].style.display = \'none\';
			this.innerHTML = \'<b>Spoiler: </b><a href=\'#\' onClick=\'return false;\'>anzeigen</a>\'; 
		}
		" />
		<b>Spoiler: </b>
		<a href="#" onClick="return false;">anzeigen</a>
		</span>
	</div>
	<div class="quotecontent">
		<div style="display: none;">
			'.$text.'
		</div>
	</div>	
</div>';
echo $ret;
Probleme gibt es nur in den
this.innerHTML = '\
Zeilen.

Hier meldet mir Firebug: "illegal character".
Liegt wohl daran das ich auch das #-Zeichen escape..
Wer kann helfen?

Verfasst: 16.09.2008 14:34
von Pyramide
Wenn du den Inhalt der Variable am Schluss sowieso ausgibst, warum verwendest du dann nicht

Code: Alles auswählen

?> HTML <?php
?

Alternativ gibt es noch die Heredoc Syntax.

Verfasst: 16.09.2008 15:38
von Fennias Maxim
Pyramide hat geschrieben:Wenn du den Inhalt der Variable am Schluss sowieso ausgibst, warum verwendest du dann nicht

Code: Alles auswählen

?> HTML <?php
?
Ich hab das echo nur da hingeschreiben, damit man weiß was mit der Variablen passiert. Sie wird in Wirklichkeit viel Später ausgegeben. (Das Script ist größer)

Verfasst: 16.09.2008 19:56
von igorw
Probier mal folgendes.

Ersetze:

Code: Alles auswählen

this.innerHTML = \'<b>Spoiler: </b><a href=\'"#"\' onClick=\'"return false;"\'>ausblenden</a>\';
Mit:

Code: Alles auswählen

this.innerHTML = \'<b>Spoiler: </b><a href=\\"#\\" onClick=\\"return false;\\"\'>ausblenden</a>\';
Und:

Code: Alles auswählen

this.innerHTML = \'<b>Spoiler: </b><a href=\'#\' onClick=\'return false;\'>anzeigen</a>\'; 
Mit:

Code: Alles auswählen

this.innerHTML = \'<b>Spoiler: </b><a href=\\"#\\" onClick=\\"return false;\\">anzeigen</a>\';