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

Форум Регулярные Выражения

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

 

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

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

тема: Замена строки
 
 автор: Razputin   (17.02.2006 в 00:03)   письмо автору
 
 

Как заменить вот такую строку {date} на функцию с таким же названием, что внутри скобок?

   
 
 автор: cheops   (17.02.2006 в 00:29)   письмо автору
 
   для: Razputin   (17.02.2006 в 00:03)
 

На результат работы функции?

   
 
 автор: Razputin   (17.02.2006 в 07:54)   письмо автору
 
   для: cheops   (17.02.2006 в 00:29)
 

да

   
 
 автор: cheops   (17.02.2006 в 13:50)   письмо автору
 
   для: Razputin   (17.02.2006 в 00:03)
 

Это удобно сделать при помощи функции preg_replace_callback(), функции обратного вызова и фукцнии eval() - примерно так.
<?php
  $text 
"Как заменить вот такую строку {date_func} на функцию с таким же названием, что внутри скобок?";
  
$pattern "#\{([^\}]+)\}#isU";
  
$text preg_replace_callback($pattern,"insert_text",$text);
  echo 
$text;

  
// функция обратного вызова
  
function insert_text($matches
  {
    eval(
"\$temp = ".$matches[1]."();");
    return 
$temp;
  }

  function 
date_func()
  {
    return 
"Hello world!";
  }
?>

   
 
 автор: Razputin   (18.02.2006 в 11:55)   письмо автору
 
   для: cheops   (17.02.2006 в 13:50)
 

А если есть функция

date_func($var) {
 $var += 4
  return $var;
}


Как расширить этот пример который выше, чтобы можно было передовать значения если они есть. к примеру вот такой строкой: {date_func 1}, где 1 знчаение функция у меня принимает лишь одно значение и тип его чиловой.

   
 
 автор: cheops   (18.02.2006 в 13:24)   письмо автору
 
   для: Razputin   (18.02.2006 в 11:55)
 

А значение (4) откуда берётся?

   
 
 автор: Razputin   (18.02.2006 в 14:43)   письмо автору
 
   для: cheops   (18.02.2006 в 13:24)
 

оно в самой функции, просто это фунция должна увеличивать $var на 4 по идее. Я немного не так нписал ее:

function date_func($var) {
 $var += 4; 
 return $var
}


Мне интересно можно ли переделать пример так чтобы в строке {date_func 1} через пробел можно было передовать значения функуции?

   
 
 автор: cheops   (18.02.2006 в 22:10)   письмо автору
 
   для: Razputin   (18.02.2006 в 14:43)
 

Нет имеется ввиду, откуда значение для параметр $var должно браться?

   
 
 автор: Razputin   (18.02.2006 в 23:15)   письмо автору
 
   для: cheops   (18.02.2006 в 22:10)
 

Значение $var задается в руную мною, но эти значения соответсвуют номерам полей в таблице из базы данных, когда функция получет значение 1, то она выводит все поля таблицы из строки 1.


function get_block($id) {
    $query = mysql_query("SELECT * FROM block WHERE id=$var");
    $block = mysql_fetch_assoc($query);
    $text_block = $block['text_block'];
    return $text_block;
}


можно ли сделать чтобы обрабатывая строку {get_blok 1} , вместо нее вызывалась функция get_block() с параметром 1 (get_block(1)) а если встреяает строку {date_func} вызывал функию без парметров? В то место где эти строки расположены.

   
 
 автор: cheops   (19.02.2006 в 13:40)   письмо автору
 
   для: Razputin   (18.02.2006 в 23:15)
 

Нет, я имею ввиду, что когда у нас ситуация с одним параметром, {get_blok 1} или get_block(1), откуда мы будем брать значение $var, т.е. значение самого параметра.

   
 
 автор: Razputin   (20.02.2006 в 11:44)   письмо автору
 
   для: cheops   (19.02.2006 в 13:40)
 

Опять немного ошибся :( вместо $id должно быть $var, а значения должны браться из строки {get_block 1) где get_block имя фставляемой функции, а через пробел 1 значение присваиваемое $var, или {get_block 2} где 2 значение и т.д.

   
 
 автор: Razputin   (20.02.2006 в 14:30)   письмо автору
 
   для: Razputin   (18.02.2006 в 23:15)
 

Таоке вообще реально?

   
Rambler's Top100
вверх

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