Seite 2 von 2

Verfasst: Mi 18. Mai 2005, 15:48
von timo
So, der HTML-Validator funktioniert wieder richtig, außerdem gibt es eine Funktion, mit der geprüft werden kann, ob ein bestimmter Tag vorhanden ist -> der Layout-Editor prüft jetzt auch, ob die Tags vorhanden sind.

Verfasst: Mo 30. Mai 2005, 13:24
von emergence
ich muss das thema leider wieder aufmachen da ich in ein nettes problem beim validtor geraten bin... (HerrB hatte das in ähnlicher form mit der variable $db)

ich setze für ein projekt direkt im layout php code ein.
soweit so gut -> die konstruktion sieht in etwa so aus

Code: Alles auswählen

<?php 

$properties = new PropertyCollection();

function img($idcat) {
    global $properties;
    return $properties->getValue("idcat", $idcat, "visual", "image");
}

$image = img($idcat);

?>
und das verursacht leider einen fatal php error in class.htmlvalidator.php -> function cleanHTML

der grund dafür ist an sich auch logisch...
da der code in der cleanHTML mittels eval ausgeführt wird kann inerhalb der funktion img $properties nie zur verfügung stehen...
sämtliche layouts nun nachzubessern und überall ein global reinzubauen wäre etwas problematisch...

ich würde daher eher vorschlagen das eval rauszunehmen bzw die funktion cleanHTML so anzupassen das sämtlicher php code ignoriert wird...
ich hab mich jetzt mal mit preg_replace gespielt und somit sämtlichen php code rausgefiltert...
das einzige was dann natürlich nicht mehr stimmt sind die zeilennummern angabe beim parsen, falls tags vergessen wurden...
jede zeile php code die rausgefiltert wird müsste somit durch -> \n ersetzt werden...

falls eine überprüfung des php codes durchgeführt werden soll müsste das ähnlich gehandhabt werden wie in modTestModule (ich glaub zumindestens das die funktion so heisst) -> also sämtlichen html code mit einer funktionsdefinition function foo () { [HTMLCODE] } ... umschließen...

Verfasst: Do 9. Jun 2005, 14:20
von timo
Es gibt ja die Systemeinstellung layout/htmlvalidator, mit der die Prüfung ausgeschalten werden kann...

mit dem eval sollte primär vermieden werden, daß eben jener PHP-Code für die Validierung in Betracht kommt...

Verfasst: Do 9. Jun 2005, 15:09
von emergence
timo hat geschrieben:mit dem eval sollte primär vermieden werden, daß eben jener PHP-Code für die Validierung in Betracht kommt...
die idee mit dem eval ist ja keine schlechte -> mir gefällt diese möglichkeit
nur momentan ist preg_replace einfach der bessere weg...

Verfasst: Do 9. Jun 2005, 15:34
von timo
hast du die Regular Expression gerade parat? Wenn nicht, baue ich das evtl später um

Verfasst: Do 9. Jun 2005, 15:48
von emergence
fertig ist sie ja...
das mit den zeilen nummern stimmt nur noch nicht...
und ich sitze momentan nicht vor meinem eigenen rechner(stromabschaltung)...

Verfasst: Do 9. Jun 2005, 17:48
von emergence
sieht bei mir momentan wie folgt aus:

Code: Alles auswählen

	function cleanHTML ($html)
	{

        // remove all php code from layout
        $resultingHTML = preg_replace('/<\?(php)?((.)|(\s))*?\?>/i', '', $html);

		/* We respect only \n, but we need to take care of windows (\n\r) and other systems (\r) */
		$resultingHTML = str_replace("\r\n", "\n", $resultingHTML);
		$resultingHTML = str_replace("\r", "\n", $resultingHTML);

        return $resultingHTML;

	}

Verfasst: Mo 29. Aug 2005, 18:12
von timo
so die Funktion habe ich mal eingebaut

darf ich schließen?

Verfasst: Mo 29. Aug 2005, 18:37
von emergence
timo hat geschrieben:darf ich schließen?
ist lieb dass du fragst...

geschlossen