Как вернуть константу или текстовую строку в PHP - это eval () - PullRequest
4 голосов
/ 22 апреля 2011

У меня есть строка в таблице mysql, столбец которой содержит:

This is a test.

У меня есть еще одна строка в той же таблице mysql, столбец которой содержит:

K_IM_A_CONSTANT

Ранее вВ сценарии PHP эта строка кода существует:

define(K_IM_A_CONSTANT, 'This is a constant.');

Как я могу отобразить содержимое столбца, в результате чего возвращаемое значение будет "Это тест".или «Это константа.», в зависимости от выбранной строки?

Является ли eval () способом сделать это?Если да, то как может выглядеть синтаксис eval ()?Я получаю слишком много ошибок, пытаясь заставить eval () работать.

Спасибо за помощь.

Ответы [ 2 ]

9 голосов
/ 22 апреля 2011

Используйте функцию constant:

if(defined($row['column_name']))
{
    echo constant($row['column_name']);
}
0 голосов
/ 22 апреля 2011

Итак, учитывая фрагмент текста, вы хотите найти имя константы, значение которой соответствует фрагменту текста? Это кажется мне отвратительным злоупотреблением "константами", но вы бы хотели использовать get_defined_constants():

function find_constant_name($text) {
    $constants = get_defined_constants();
    foreach($constants as $const => $val) {
        if ($val == 'Your specified text') {
             return($const);
        }
    }
}

find_constant_name('This is a test.');
...