Как вернуть константу или текстовую строку в PHP - это eval() путь

102
10

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


This is a test.

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


K_IM_A_CONSTANT

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


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

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


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


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

спросил(а) 2021-01-19T13:14:27+03:00 9 месяцев назад
1
Решение
136

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

if(defined($row['column_name']))
{
echo constant($row['column_name']);
}

ответил(а) 2021-01-19T13:14:27+03:00 9 месяцев назад
46

Итак, заданный фрагмент текста, вы хотите найти имя константы, значение которой соответствует фрагменту текста? Это похоже на отвратительное злоупотребление "константами" для меня, но вы бы хотели использовать 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.');

ответил(а) 2021-01-19T13:14:27+03:00 9 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема