|
|
|
| Как заменить вот такую строку {date} на функцию с таким же названием, что внутри скобок? | |
|
|
|
|
|
|
|
для: Razputin
(17.02.2006 в 00:03)
| | На результат работы функции? | |
|
|
|
|
|
|
|
для: cheops
(17.02.2006 в 00:29)
| | да | |
|
|
|
|
|
|
|
для: 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!";
}
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(17.02.2006 в 13:50)
| | А если есть функция
date_func($var) {
$var += 4
return $var;
}
|
Как расширить этот пример который выше, чтобы можно было передовать значения если они есть. к примеру вот такой строкой: {date_func 1}, где 1 знчаение функция у меня принимает лишь одно значение и тип его чиловой. | |
|
|
|
|
|
|
|
для: Razputin
(18.02.2006 в 11:55)
| | А значение (4) откуда берётся? | |
|
|
|
|
|
|
|
для: cheops
(18.02.2006 в 13:24)
| | оно в самой функции, просто это фунция должна увеличивать $var на 4 по идее. Я немного не так нписал ее:
function date_func($var) {
$var += 4;
return $var
}
|
Мне интересно можно ли переделать пример так чтобы в строке {date_func 1} через пробел можно было передовать значения функуции? | |
|
|
|
|
|
|
|
для: Razputin
(18.02.2006 в 14:43)
| | Нет имеется ввиду, откуда значение для параметр $var должно браться? | |
|
|
|
|
|
|
|
для: 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} вызывал функию без парметров? В то место где эти строки расположены. | |
|
|
|
|
|
|
|
для: Razputin
(18.02.2006 в 23:15)
| | Нет, я имею ввиду, что когда у нас ситуация с одним параметром, {get_blok 1} или get_block(1), откуда мы будем брать значение $var, т.е. значение самого параметра. | |
|
|
|
|
|
|
|
для: cheops
(19.02.2006 в 13:40)
| | Опять немного ошибся :( вместо $id должно быть $var, а значения должны браться из строки {get_block 1) где get_block имя фставляемой функции, а через пробел 1 значение присваиваемое $var, или {get_block 2} где 2 значение и т.д. | |
|
|
|
|
|
|
|
для: Razputin
(18.02.2006 в 23:15)
| | Таоке вообще реально? | |
|
|
|