class test {
public $w;
public function __construct(){}
private function t($q){
print_r($q);
return "sss".$q[1]."ddd";
}
public function e(){
$this->w=preg_replace_callback("{(qwerty)}","this->t","111qwerty222");
}
}
$test=new test();
$test->e();
echo "Hello!\n<br>\n";
echo $test->w;
echo "\n<br>\nHello!\n<br>\n";
exit();
preg_replace_callback - callback функция в классе не вызывается
Как засунуть callback функцию в класс???
Когда callback-функция t() находится в классе, то callback-вызов не происходит, а если функция t() находится вне класса, то всё работает.
Далее идут пояснения.
Вот так не работает:
Код:
Вывод в браузере:
Код:
Hello!
<br>
111qwerty222
<br>
Hello!
<br>
<br>
111qwerty222
<br>
Hello!
<br>
А вот так работает:
Код:
function t($q){
//print_r($q);
return "sss".$q[1]."ddd";
}
class test {
public $w;
public function __construct(){}
/*
private function t($q){
print_r($q);
return "sss".$q[1]."ddd";
}
*/
public function e(){
$this->w=preg_replace_callback("{(qwerty)}","t","111qwerty222");
}
}
$test=new test();
$test->e();
echo "Hello!\n<br>\n";
echo $test->w;
echo "\n<br>\nHello!\n<br>\n";
exit();
//print_r($q);
return "sss".$q[1]."ddd";
}
class test {
public $w;
public function __construct(){}
/*
private function t($q){
print_r($q);
return "sss".$q[1]."ddd";
}
*/
public function e(){
$this->w=preg_replace_callback("{(qwerty)}","t","111qwerty222");
}
}
$test=new test();
$test->e();
echo "Hello!\n<br>\n";
echo $test->w;
echo "\n<br>\nHello!\n<br>\n";
exit();
Вывод в браузере:
Код:
Hello!
<br>
111sssqwertyddd222
<br>
Hello!
<br>
<br>
111sssqwertyddd222
<br>
Hello!
<br>
Код:
class test {
public $w;
public function __construct(){}
private function t($q){
//print_r($q);
return "ssdd".$q[1]."ddss";
}
public function e(){
$this->w=preg_replace_callback("{(qwerty)}",array("self","t"),"111qwerty222");
}
}
$test=new test();
$test->e();
echo "Hello!\n<br>\n";
echo $test->w;
echo "\n<br>\nHello!\n<br>\n";
exit();
public $w;
public function __construct(){}
private function t($q){
//print_r($q);
return "ssdd".$q[1]."ddss";
}
public function e(){
$this->w=preg_replace_callback("{(qwerty)}",array("self","t"),"111qwerty222");
}
}
$test=new test();
$test->e();
echo "Hello!\n<br>\n";
echo $test->w;
echo "\n<br>\nHello!\n<br>\n";
exit();
http://www.google.ru/#hl=ru&xhr=t&q=preg_replace_callback+-+callback+%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D1%8F+%D0%B2+%D0%BA%D0%BB%D0%B0%D1%81%D1%81%D0%B5+%D0%BD%D0%B5+%D0%B2%D1%8B%D0%B7%D1%8B%D0%B2%D0%B0%D0%B5%D1%82%D1%81%D1%8F&cp=63&pf=p&sclient=psy&newwindow=1&site=&source=hp&aq=f&aqi=&aql=&oq=preg_replace_callback+-+callback+%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D1%8F+%D0%B2+%D0%BA%D0%BB%D0%B0%D1%81%D1%81%D0%B5+%D0%BD%D0%B5+%D0%B2%D1%8B%D0%B7%D1%8B%D0%B2%D0%B0%D0%B5%D1%82%D1%81%D1%8F&pbx=1&fp=439e7c51dcd0a30&biw=1280&bih=759
http://snippets.pp.ru/article/126/