2013-03-22 2 views
-3

я хочу знать, как изменить переменные на Evalпеременные изменения с помощью str_replace на Eval

Посмотрите код, пожалуйста, помогите мне

$status = "HD"; 

$vari = "XX"; 

$condition = "if($status<>'99' && $status<>'XX' && $status<>'XM' && $status<> 'XD' && $status<> 'XY' && $status<> 'XE') 
{ echo 'YES'; } else { echo 'NO'; }"; 

$condition = eval($condition); 

echo $condition; 
echo "<hr>"; 

$resp = str_replace('status','vari',$condition); 
echo eval($resp); 

Проблема, не изменить переменные .. увидеть, если изменения результаты ДА или НЕТ ...

И я хочу, используя эту работу на моем WHILE Выражение

while($condition) { 

    ... 

} 

T hank You

+7

Если вам нужно использовать 'eval', то у вас есть серьезные проблемы –

+2

Пожалуйста, не ТИП ВАШИ ВОПРОСЫ В ВСЕХ КАПС. Трудно читать, это не поможет вам раньше, и это раздражает. (Это также считается SHOUTING, что грубо.) Спасибо. –

+1

Ваше второе «$ condition =» изменяет значение условия. Поскольку ваше утверждение ничего не возвращает, условие $ будет равно null. Таким образом, $ resp является str_replace на null. Это все равно null. – kainaw

ответ

0

Пожалуйста, исправьте меня, если я ошибаюсь, но из вашего кода выше, когда вы оцениваете строку $ condition, вы возвращаете ее обратно в условие $. Если ваш оцененный код не имеет «return» в нем, он вернет null (reff: http://php.net/manual/en/function.eval.php).

Но ваша проблема в том, что вы действительно используете прокси-приложение «on». Когда вы используете «, чтобы обернуть строку (-ы) на php, она изменит каждую переменную в этой строке на значение, определенное для этой переменной выше этого кода.

Итак, вместо того, чтобы ваш код оценивался по php, вы фактически отправляете неправильный код в eval().

текущее состояние $ код:

if(HD<>'99' && HD<>'XX' && HD<>'XM' && HD<> 'XD' && HD<> 'XY' && HD<> 'XE') { echo 'YES'; } else { echo 'NO'; } 

и что вы пытаетесь для того чтобы достигнуть это:

if($status<>"99" && $status<>"XX" && $status<>"XM" && $status<> "XD" && $status<> "XY" && $status<> "XE") { echo "YES"; } else { echo "NO"; } 

Пожалуйста, измените "на 'так как строка (s) завернуть в' будет как это (если вы хотите поместить 'внутри него, пожалуйста, спасся его с помощью обратной косой черты (\)) и посмотреть, что произойдет

моя работа вокруг:.

$status = "HD"; 
$vari = "XX"; 
$condition = 'if($status<>"99" && $status<>"XX" && $status<>"XM" && $status<> "XD" && $status<> "XY" && $status<> "XE") { echo "YES"; } else { echo "NO"; }'; 
eval($condition); 
echo $condition; 
echo "<hr>"; 
$resp = str_replace('status','vari',$condition); 
eval($resp); 
+0

@Mock. Расид, спасибо, ваши два результата были отличными – Claudio

+0

в любое время, но что такое «мои два результата»? во всяком случае, посмотрите другой способ, прежде чем использовать eval, как и другие (ие) комментарии (и). Я предпочел бы генерировать новый php-файл, используя «while ..», а затем перенаправить пользователя на выполнение этого php-файла. –

+0

Могу ли я использовать результат $ variable = 'yes' или false $ variable = 'no' вместо echo 'yes' echo 'no'? – Claudio

Смежные вопросы