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
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...
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;
}
Vielleicht ein Problem der PHP-Version?
Hallo!
das betrifft den commit von mir:
https://github.com/mozilo/mozilo2.0/commit/3d15db91aa0c0cde37261d62c4719eb2a0b73c96 (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 (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 (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
Hi Jürgen,
kann ich denn dann das Script überhaupt mit meiner PHP-Version auf dem Server nutzen?
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
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
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
habs mal geändert solte jetzt gehen betrieft die SearchClass.php und SpecialChars.php reicht wenn du die austauschst
lg stefanbe
hey, danke stefan!
PS: Gibt es einen speziellen Grund das die beiden callbacks im globalen scope sind, also ausserhalb der Klasse?
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
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.
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
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 ;-)
Ich wollte nur kurz Meldung erstatten, dass es jetzt wieder funktioniert auf einem PHP 5.2x Server. :-)
Dankschee
Jürgen