开发者

PHP eval $a="$a"?

开发者 https://www.devze.com 2023-02-17 15:58 出处:网络
I was looking through some code for work, and came across this line: eval(\"\\$element = \\\"$element\\\";\");

I was looking through some code for work, and came across this line:

eval("\$element = \"$element\";");

I'm really confused as to why any PHP developer would've written this line. What purpose does this serve, besides setting a variable to itself?

Luckily, the function this line开发者_如何学Go is in is never called.


<?php
$string = 'cup';
$name = 'coffee';
$str = 'This is a $string with my $name in it.';
echo $str. "\n";
eval("\$str = \"$str\";");
echo $str. "\n";
?> 

The above example will output:

This is a $string with my $name in it.
This is a cup with my coffee in it.

http://php.net/manual/en/function.eval.php

I do just ctl+c ctrl+v :-)


It converts the value of the variable to a string, but I wouldn't recommend using it.

Use the function strval() instead. Have a look at the manual.


This assigns the string-converted contents of the variable $element to a variable called $element. Another way to do this is to use strval, or in some cases print_r($x, true)


It doesn't really do much except converting the value to string or might serve as a poor alternative to sprintf. But if the variable contains double quotes, this is gonna cause some trouble. You really wouldn't want to eval a code like this:

$element = 'foo"bar';

Not to mention some even more harmful code. Seems like a place for a "php injection" :D

Don't use it.

0

精彩评论

暂无评论...
验证码 换一张
取 消