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

100
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 6 месяцев, 1 неделя назад
1
Решение
133

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

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

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

Итак, заданный фрагмент текста, вы хотите найти имя константы, значение которой соответствует фрагменту текста? Это похоже на отвратительное злоупотребление "константами" для меня, но вы бы хотели использовать 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 6 месяцев, 1 неделя назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

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