Cytat
Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /home/u580717928/public_html/engine/modules/iChat/ajax/add.php on line 237
ten błąd dotyczy tych 3 kodów:
$message = preg_replace("#\[leech\](\S.+?)\[/leech\]#ie", "\iChat_build_url(array('html' => '\\1', 'show' => '\\1'))", $message); $message = preg_replace("#\[leech\s*=\s*\"\;\s*(\S+?)\s*\"\;\s*\](.*?)\[\/leech\]#ie", "\iChat_build_url(array('html' => '\\1', 'show' => '\\2'))", $message); $message = preg_replace("#\[leech\s*=\s*(\S.+?)\s*\](.*?)\[\/leech\]#ie", "\iChat_build_url(array('html' => '\\1', 'show' => '\\2'))", $message);
gdy zmienię je na:
$message = preg_replace_callback("#\[leech\](\S.+?)\[/leech\]#ie", "\iChat_build_url(array('html' => '\\1', 'show' => '\\1'))", $message); $message = preg_replace_callback("#\[leech\s*=\s*\"\;\s*(\S+?)\s*\"\;\s*\](.*?)\[\/leech\]#ie", "\iChat_build_url(array('html' => '\\1', 'show' => '\\2'))", $message); $message = preg_replace_callback("#\[leech\s*=\s*(\S.+?)\s*\](.*?)\[\/leech\]#ie", "\iChat_build_url(array('html' => '\\1', 'show' => '\\2'))", $message);
wyskakuje mi błąd:
Cytat
Warning: preg_replace_callback(): Requires argument 2, '\iChat_build_url(array('html' => '\1', 'show' => '\2'))', to be a valid callback in /home/u580717928/public_html/engine/modules/iChat/ajax/add.php on line 238
Gdy usunę te 3 linijki błędy nie wyskakują ale tag do linku [leech*] nie działa i wyświetla jako tekst zamiast odnośnika...
Teraz pytanie jak poprawnie zmodyfikować ten kod by działał?
Poniżej podam przykład kodu jaki jest stosowany w silniku:
$source = preg_replace_callback( "#\[(leech)\](\S.+?)\[/leech\]#i", array( &$this, 'build_url'), $source ); $source = preg_replace_callback( "#\[(leech)\s*=\s*\"\;\s*(\S+?)\s*\"\;\s*\](.*?)\[\/leech\]#i", array( &$this, 'build_url'), $source ); $source = preg_replace_callback( "#\[(leech)\s*=\s*(\S.+?)\s*\](.*?)\[\/leech\]#i", array( &$this, 'build_url'), $source );