# Koenig (18.11.2016 / 00:54)Ну ты много времени на это не выделяй, мне это второстепенно ) Так сказать, рою в глубину
ДоХтор, я пробовал, анонимкой не заменить, пишу парсер
# Koenig (18.11.2016 / 00:54)Ну ты много времени на это не выделяй, мне это второстепенно ) Так сказать, рою в глубину
ДоХтор, я пробовал, анонимкой не заменить, пишу парсер
ДоХтор, бредовато, но работает
<?php
function parser($str) {
preg_match('#(.*)(\+|\-|\*|\/)(.*)#', $str, $matches);
return array($matches[1], $matches[3], str_replace(array('+', '-', '*', '/'), array('plus', 'minus', 'multi', 'divide'), $matches[2]));
}
function proc($args) {
return $args[2]($args[0], $args[1]);
}
function plus($a, $b) {
return $a + $b;
}
function minus($a, $b) {
return $a - $b;
}
function multi($a, $b) {
return $a * $b;
}
function divide($a, $b) {
return $b > 0 ? ($a / $b) : 'division by zero';
}
$args = parser('1 + 3');
echo proc($args);ДоХтор, врроде 5.6 пых, может на ранних не заработать, и придется сначала сохранить имя функции в переменную
# Koenig (18.11.2016 / 01:08)На 5.4 тоже работает ) Меня только объём кода смущает. А существуют ли безопасные вызовы create_function() ? Например, как плейсхолдеры в PDO - можно же составить массив значений для create_function() , и передавать в неё только эти значения. Верно?
ДоХтор, врроде 5.6 пых, может на ранних не заработать, и придется сначала сохранить имя функции в переменную
Koenig,
<?php
$result = 0;
$operation = ['+', '-', '*', '/'];
$a = filter_input(INPUT_POST, 'a', FILTER_SANITIZE_NUMBER_INT);
$b = filter_input(INPUT_POST, 'b', FILTER_SANITIZE_NUMBER_INT);
$action = filter_input(INPUT_POST, 'action');
if (in_array($action, $operation)) {
$create = create_function('$a, $b', 'return $a '. $action .' $b;');
$result = $create($a, $b);
}
?>
<form method="post">
<input type="text" name="a" />
<input type="text" name="b" /><br />
<?php foreach ($operation as $opt) { ?>
<input type="checkbox" name="action" value="<?php echo $opt; ?>" />
<?php echo $opt; ?><br />
<?php } ?>
<input type="submit" value="Выполнить" />
</form>
<?php echo $result; ?>ДоХтор, по сути да
ДоХтор, всегда интересовал такой вопрос, почему тебе проще так писать
<?php } ?>
а не echo юзать?) постоянно тег пхп вставлять геморно же)))
# Zidan_@777@ (18.11.2016 / 02:53)так точно не будет никаких ошибок в php коде из-за кавычек, скобок и прочих символов в html вёрстке. Wordpress именно так код пишет.
ДоХтор, всегда интересовал такой вопрос, почему тебе проще так писать
<?php } ?>
а не echo юзать?) постоянно тег пхп вставлять геморно же)))
# Koenig (18.11.2016 / 02:36)Значит на нём и остановлюсь.
ДоХтор, по сути да
# Zidan_@777@ (18.11.2016 / 02:53)Потому, что при необходимости что-то дописать в html-коде, при таком подходе, проще ориентироваться, чем в строчной "каше" пхп-кода. И ещё плюс в том, что при подобном разделении IDE подсвечивает хтмл синтаксис.
ДоХтор, всегда интересовал такой вопрос, почему тебе проще так писать
<?php } ?>
а не echo юзать?) постоянно тег пхп вставлять геморно же)))