Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: preg_replace модификтор e и $this
 
 автор: ntro123   (19.07.2011 в 14:09)   письмо автору
 
 

Добрый день.

$trol=explode('|', $this->param);

while (list($key, $val) = each($trol)) {
$trol[$key]="#($val)#e";
}
            

echo preg_replace($trol, "$this->$1()", $code);


Выводит ошибочку типо


Catchable fatal error:  Object of class SEOcode_sort could not be converted to string in Z:\home\test1.ru\www\classes\seocode_sort.php on line 226


Если без ООП т.е. без $this->

то как следует ожидать ошибка

Fatal error:  Call to undefined function ya_pages_in_index() in Z:\home\test1.ru\www\classes\seocode_sort.php(226) : regexp code on line 1


как сделать?( как вызвать функцию из класса?(

  Ответить  
 
 автор: ntro123   (19.07.2011 в 15:27)   письмо автору
 
   для: ntro123   (19.07.2011 в 14:09)
 

Никто не сталкивался?

  Ответить  
 
 автор: Саня   (19.07.2011 в 16:09)   письмо автору
 
   для: ntro123   (19.07.2011 в 14:09)
 

Приведите полный код.

> как вызвать функцию из класса?(
Это очень просто. Нужно объявить метод статическим и его можно будет вызывать из класса.

  Ответить  
 
 автор: ntro123   (19.07.2011 в 16:32)   письмо автору
 
   для: Саня   (19.07.2011 в 16:09)
 

class Value
{
public $ya_pages_in_index='123';
}

class SEOcode extends Value
{
public function get()
{
$code='1+ya_pages_in_index+1'
 echo preg_replace("#ya_pages_in_index#e", "$this->$1", $code);
}
}

Должно показать 1+123+1

  Ответить  
 
 автор: Саня   (19.07.2011 в 16:34)   письмо автору
 
   для: ntro123   (19.07.2011 в 16:32)
 

А почему оно должно показать показать 1+123+1?

  Ответить  
 
 автор: ntro123   (19.07.2011 в 16:53)   письмо автору
 
   для: Саня   (19.07.2011 в 16:34)
 

потому что preg_replace должен в $code (где содержиться "1+ya_pages_in_index+1") замени "ya_pages_in_index" на $this->ya_pages_in_index (в котором содержиться "123")

Разуметься я упустил формальности специально. (не стал создавать экзампляр класса и вызывать метод)

Надеюсь поможете =(

ПС. пардон строку
preg_replace("#ya_pages_in_index#e", "$this->$1", $code);
нужно заменять на
preg_replace("#(ya_pages_in_index)#e", "$this->$1", $code);



вот код


class Value 

    public $ya_pages_in_index='123'; 


class SEOcode extends Value 

    public function get() 
    { 
        $code='1+ya_pages_in_index+1';
        echo preg_replace("#(ya_pages_in_index)#e", "$this->$1", $code); 
    } 
}



$wb=new SEOcode();
$wb->get();



как и ожидал выводит


Catchable fatal error:  Object of class SEOcode_sort could not be converted to string in Z:\home\test1.ru\www\classes\seocode_sort.php on line 226

  Ответить  
 
 автор: ntro123   (19.07.2011 в 17:33)   письмо автору
 
   для: ntro123   (19.07.2011 в 16:53)
 

После долгих мучений нашел что мне надо

http://blog.webproduction.com.ua/preg_replace+с+модификатором+e/

Всем спасибо.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования