php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #11085 preg_replace_callback and class methods
Submitted: 2001-05-24 08:38 UTC Modified: 2001-05-24 09:25 UTC
From: bilo at mit dot it Assigned:
Status: Closed Package: PCRE related
PHP Version: 4.0.5 OS: Linux
Private report: No CVE-ID: None
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If you forgot your password, you can retrieve your password here.
Password:
Status:
Package:
Bug Type:
Summary:
From: bilo at mit dot it
New email:
PHP Version: OS:

 

 [2001-05-24 08:38 UTC] bilo at mit dot it
I was using preg_replace with the '/F' parameter, and it
was working perfectly till v4.0.4pl1. Now it has been
substituted by preg_replace_callback.

Does preg_replace_callback work with class method as a callback function, too? If it does, how should it be
written?

I'm asking this because in each of these cases:

preg_replace_callback(/{([A-Z_][A-Z0-9_]*)}/i', $this->callmeback, $text);
preg_replace_callback(/{([A-Z_][A-Z0-9_]*)}/i', "\$this->callmeback", $text);
preg_replace_callback(/{([A-Z_][A-Z0-9_]*)}/i', '$this->callmeback', $text);

I get a warning:

preg_replace_callback() requires argument 2, [...],
to be a valid callback

More: there is another drawback. With preg_replace + '/F' parameter I could also specify additional parameters in the command line. Now I can't.

Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2001-05-24 09:25 UTC] mfischer@php.net
Method callbacks are performed with the syntax array( $object, 'method'); in your case you want to write 

preg_replace_callback( '/{([A-Z_][A-Z0-9_]*)}/i', array( &$this, 'callmeback');, $text);

Btw, you missed the ' after callback( ...

- Markus
 [2001-05-24 09:25 UTC] mfischer@php.net
Forget the ';' after 'callmeback') ...

- Markus
 
PHP Copyright © 2001-2025 The PHP Group
All rights reserved.
Last updated: Wed May 07 11:01:29 2025 UTC