preg_replace_callback a OOP?
4 příspěvky
Archiv diskusního fóra
Fórum je uzavřené a slouží pouze ke čtení. Některé informace mohou být zastaralé.
-
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>