Различные вопросы по PHP и MySQL

254K
.
# Koenig (18.11.2016 / 00:54)
ДоХтор, я пробовал, анонимкой не заменить, пишу парсер
Ну ты много времени на это не выделяй, мне это второстепенно ) Так сказать, рою в глубину
.
(\/)____o_O____(\/)

ДоХтор, бредовато, но работает

быдло (+/-)

<?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);

.
(\/)____o_O____(\/)

ДоХтор, врроде 5.6 пых, может на ранних не заработать, и придется сначала сохранить имя функции в переменную

.
# Koenig (18.11.2016 / 01:08)
ДоХтор, врроде 5.6 пых, может на ранних не заработать, и придется сначала сохранить имя функции в переменную
На 5.4 тоже работает ) Меня только объём кода смущает. А существуют ли безопасные вызовы create_function() ? Например, как плейсхолдеры в PDO - можно же составить массив значений для create_function() , и передавать в неё только эти значения. Верно?
.
ДоХтор

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; ?>
.
(\/)____o_O____(\/)

ДоХтор, по сути да

.

ДоХтор, всегда интересовал такой вопрос, почему тебе проще так писать
<?php } ?>
а не echo юзать?) постоянно тег пхп вставлять геморно же)))

.
Enter нажат, к чему теперь рыданья…
# Zidan_@777@ (18.11.2016 / 02:53)
ДоХтор, всегда интересовал такой вопрос, почему тебе проще так писать
<?php } ?>
а не echo юзать?) постоянно тег пхп вставлять геморно же)))
так точно не будет никаких ошибок в php коде из-за кавычек, скобок и прочих символов в html вёрстке. Wordpress именно так код пишет.
.
# Koenig (18.11.2016 / 02:36)
ДоХтор, по сути да
Значит на нём и остановлюсь.
.
# Zidan_@777@ (18.11.2016 / 02:53)
ДоХтор, всегда интересовал такой вопрос, почему тебе проще так писать
<?php } ?>
а не echo юзать?) постоянно тег пхп вставлять геморно же)))
Потому, что при необходимости что-то дописать в html-коде, при таком подходе, проще ориентироваться, чем в строчной "каше" пхп-кода. И ещё плюс в том, что при подобном разделении IDE подсвечивает хтмл синтаксис.
Всего: 7969