Dzus,
pri reseni jednoho problemu jsem potreboval a potrebuji pouzit funkci preg_replace_callback() ... manual rika:
mixed preg_replace_callback ( mixed pattern, callback callback, mixed subject [, int limit])
The behavior of this function is almost identical to preg_replace(), except for the fact that instead of replacement parameter, one should specify a callback that will be called and passed an array of matched elements in the subject string. The callback should return the replacement string.
jenomze problem je ten, ze funkci preg_replace_callback() pouzivam ve tride. stejne tak mam definovanou callbackovou funkci a v tom je problem...
bezne bych ji volal takto: preg_replace_callback("/.nejakyregexp.../", "nazevcallbackfunkce", ...)
ale to nemuzu protoze je definovana ve tride a
preg_replace_callback("/.nejakyregexp.../", "$this->nazevcallbackfunkce", ...)
je logicky nesmysl (samozrejme to nejede)
modifer /e v preg_replace jako ekvivalent neni schopny tolika vymozenosti kolika potrebuji
nema nekdo nejake reseni?
dik
a neslo by pouzit
preg_replace_callback("/.nejakyregexp.../","CTrida::nazevcallbackfce",...)
Podobny pripad je napriklad u fukce xml_set_element_handler, kdyz chcete udelat tridu pro parsovani XML. V dokumentaci je priklad a v nem to funguje tak, ze se vola xml_set_element_handler z konstruktoru (zevnitr tridy) a callback funkce se oznaci jenom nazvem (zadny $this->...) a funguje to, jak ma.
<HTML>Aha.. ono je to v usercomments :-/
Cituji: If you want to be able to change variables of the class in the callback function, you have to use preg_replace_callback(pattern, array(&$this, 'method_name'), subject)
tak uz je po problemu.. ja na tyhle komentare uplne zapomel (bohuzel spolehal jsem na offlinemanual ktery mlcel)</HTML>