Оцените строку как код PHP без использования eval

Видя, как следует избегать eval, как вы оцениваете строку как код PHP без использования eval? Например, рассмотрим этот код:

<?php

$string = 'cup';
$name = 'coffee';
$str = 'This is a $string with my $name in it.'; 

$str = "\"$str\""; // Now I have a string with double quotes around it. 

// how to get the contents of $str evaluated without using eval()

?>

Я могу получить желаемый результат, используя Eval, как это так - eval("echo $str;");Но eval - это именно то, чего я хочу избежать.

Вы можете рассматривать это как вопрос удаления двойных кавычек. Но дело не в этом. Как указывает @AmalMurali, здесь я спрашиваю how to get the contents of $str evaluated without using eval()

3 ответа

Вы можете разместить свой код так:

$string = 'cup';
$name = 'coffee';
$str = 'This is a ' . $string . ' with my ' . $name . ' in it.'; 

Или, возможно, так, используя sprintf это мой личный любимый метод обработки таких случаев:

$string = 'cup';
$name = 'coffee';
$str = sprintf('This is a %s with my %s in it.', $string, $name); 

Существуют различные варианты, основанные на личном стиле и предпочтениях.

Почему вы добавляете двойные кавычки, а затем удаляете их? Для включения простой строковой переменной вы просто используете двойные кавычки, такие как

$string = 'cup';
$name = 'coffee';
$str = "This is a $string with my $name in it."; 

echo $str;

Здесь вы действительно хотите использовать двойные кавычки для $str, чтобы можно было заменить переменную.

См. Также документы: http://www.php.net/manual/it/language.types.string.php

Другие вопросы по тегам