Neuigkeiten:

moziloCMS verwendet Cookies. Wenn Sie auf unserer Seite weitersurfen, stimmen Sie der Cookie-Nutzung zu Datenschutzerklärung
moziloCMS Layouts
moziloCMS Plugins

Hauptmenü

Fehler in SpecialChars.php

Begonnen von neo67, 14. Mai 2013, 10:10:19

« vorheriges - nächstes »

neo67

Bei der Installation der 2.0er kommt es zum Fehler:

Parse error: syntax error, unexpected T_FUNCTION in /www/htdocs/w00d5d1d/cms-test-vergleich.de/cms/SpecialChars.php on line 133

Auf dem Server läuft:
PHP Version 5.2.12-nmm4

Gruß
Jürgen
Linux Mint Support: http://www.linuxmintusers.de

neo67

Ich glaube die ";" müssen mit -'- versehen werden.

Zeile:  134
return "^&#".ord($arr[1]).";";
in
return "'^&#"'.ord($arr[1]).';'";

und bei Zeile 147 auch...
Ich teste das mal...
Linux Mint Support: http://www.linuxmintusers.de

neo67

Mit dem alten Code der 1.12 geht es durch, da fehlt auch die
function($arr)

// ------------------------------------------------------------------------------
// Geschütze zeichen codieren
// ------------------------------------------------------------------------------
    function encodeProtectedChr($text) {# protected
        # alle geschützten zeichen suchen und in html code wandeln auch das ^
        $text = preg_replace("/\^(.)/Umsie", "'^&#'.ord('\\1').';'", $text);
        return $text;
    }

// ------------------------------------------------------------------------------
// Geschütze zeichen wieder herstellen
// ------------------------------------------------------------------------------
    function decodeProtectedChr($text) {
        # alle ^&#?????; suchen und als zeichen ohne ^ (^) ersetzen
        $text = preg_replace("/^&#(\d{2,5});/e", "chr('\\1')", $text);
        return $text;
    }
Linux Mint Support: http://www.linuxmintusers.de

neo67

Vielleicht ein Problem der PHP-Version?
Linux Mint Support: http://www.linuxmintusers.de

hausl78

#4
Hallo!

das betrifft den commit von mir:
https://github.com/mozilo/mozilo2.0/commit/3d15db91aa0c0cde37261d62c4719eb2a0b73c96

Scheint ein Problem der Version sein, preg_replace_callback() ist immer schon vorhanden jedoch scheinbar der Einsatz von closures (Anonyme Funktionen,   http://php.net/manual/en/class.closure.php)  erst seit PHP 5.3.

Das läßt sich aber lösen ( http://php.net/manual/de/function.create-function.php ) das war mir vorher so nicht bewußt sorry, leser wissen mehr  ::)

ZitatHäufig werden Sie die callback-Funktion für preg_replace_callback() nur an einer Stelle benötigen. In diesem Fall können Sie eine Anonyme Funktion (seit PHP 5.3.0) oder create_function() verwenden, um innerhalb des Aufrufs von preg_replace_callback() eine anonyme Funktion als Callback zu deklarieren.

Werd schaun das ich kurzfristig dazukomme!!

LG
Jürgen

neo67

Hi Jürgen,

kann ich denn dann das Script überhaupt mit meiner PHP-Version auf dem Server nutzen?
Linux Mint Support: http://www.linuxmintusers.de

hausl78

Jetzt grad nicht, aber dann schon, es gibt sogar was ich gesehen habe 2 Möglichkeiten das in Wohlgefallen aufzulösen
(wobei eine relativ aktuelle PHP Version grundsätzich so und so nicht verkehrt ist)

Ich weiß momentan nicht welche Version wir als minimum benötigen... Moment... mal kurz im Code  wühlen..

So:
Also generell wird an mehr Stellen auf Version mind. 5.0 und in der Install Routine 5.1.2. geprüft, was ich so auf die Schnelle gesehen hab (bin grad in Arbeit).

LG

neo67

Dann passt das ja.
Ich kann auch auf dem Server alle Dateien in *.php53 umbenennen, dann wird PHP 5.3 benutzt.
Aber, wenn das so auch geht, wäre das natürlich besser. :-)

Danke für die Info
Linux Mint Support: http://www.linuxmintusers.de

hausl78

#8
Nee, das muss mit Version kleiner als 5.3 auch so und so gehen

Zitat... generell wird an mehr Stellen auf Version mind. 5.0 und in der Install Routine 5.1.2. geprüft, ...

LG

stefanbe

habs mal geändert solte jetzt gehen betrieft die SearchClass.php und SpecialChars.php reicht wenn du die austauschst

lg stefanbe

hausl78

hey, danke stefan!

PS: Gibt es einen speziellen Grund das die beiden callbacks im globalen scope sind, also ausserhalb der Klasse?

stefanbe

preg_replace_callback ist doch nee function und inerhalb ner function hat mann nur zugrief auf sachen die inerhalb ersellt wurden oder global sind und functionen inerhalb einer classe sind nicht global.
es würde zwar die möglichkeit geben über $this da ran zu kommen aber auch da gibts unterschiede in den php 5 versionen.
so ist es halt einfacher :)

lg

hausl78

Ich hätte auch in erster Linie an den Klasseninternen Zugriff mit $this gedacht, als Klassenmethode wäre die ja in der Klasse ja immer vorhanden, aber gut, mag sein das es da irgendwelche Unterschiede gibt, das sieht irgendwie so komisch aus  ;D  und von der Logik her gehört die Funktion ja definitiv (ale Methode) zur Klasse SpecialChars.

PS: die ander Variante wäre mit create_function() aber so als eigene Funktion ist es definiiv eifnacher nachzuvollziehen.


stefanbe

kanst aber davon ausgehen das preg_replace_callback dann die create_function bei jedem einzelnen treffer ausführt.
was bei vielen treffern dann unnötige rechen zeit bräuchte

lg

hausl78

Ja, das glaub hab ich irgendwo gelesen.. wie gesagt.. ich wäre eh in erster Linie auf $this->callbackEncode..() ausgegangen, aber "gehen" tuts eh so auch ;-)