Heim > Backend-Entwicklung > PHP-Tutorial > php eval函数参数中存在“=”会报错怎么办

php eval函数参数中存在“=”会报错怎么办

PHPz
Freigeben: 2020-09-04 14:16:15
Original
2120 Leute haben es durchsucht

php eval函数参数中存在“=”会报错怎么办

php eval函数参数中存在“=”会报错的解决办法:

比如这样一句PHP语句eval("$a=1");

在运行时会出现这样的错误

<code>Notice: Undefined variable: a in D:\test.php on line 4
Parse error: syntax error, unexpected &#39;=&#39;, expecting end of file in D:\test.php(4) : eval()&#39;d code on line 1
PHP Notice:  Undefined variable: a in D:\test.php on line 4
PHP Parse error:  syntax error, unexpected &#39;=&#39;, expecting end of file in D:\test.php(4) : eval()&#39;d code on line 1</code>
Nach dem Login kopieren

这是怎么回事?要如何解决?

这是因为双引号里的变量名被转义了。

PHP允许我们在双引号串中直接包含字串变量,双引号串中的变量将被解释而且替换,而单引号串中的内容总被认为是普通字符。例如:

$foo = 2; 
echo "foo is $foo"; // 打印结果: foo is 2 
echo &#39;foo is $foo&#39;; // 打印结果: foo is $foo 
echo "foo is $foo\n"; // 打印结果: foo is 2 (同时换行) 
echo &#39;foo is $foo\n&#39;; // 打印结果: foo is $foo\n
Nach dem Login kopieren

因此字符串"$a=1"中的$a并不会被识别为一个字符串,而是被当成了一个变量,PHP会将则会将其解释替换。但是$a又没有被定义,所以会提示变量没有定义。$a被替换后,就成了一个字面值,将一个数字赋给一个常量,当然会提示语法错误。

比较好的做法是将双引号改成单引号eval("$a=1;");,或者进行转义eval("\$a=1;");。

另外注意字符串语句结尾的分号不要忘了,这也是错误的原因之一。

eval("\$a=1");
Nach dem Login kopieren

例子:

 <!--?php
   $string = &#39;cup&#39;;
   $name = &#39;coffee&#39;;
   $str = &#39;This is a $string with my $name in it.&#39;;
   echo $str. "\n";     
   eval("\$str = \"$str\";");
   echo $str. "\n";
Nach dem Login kopieren

eval("$a=1"); 改成 eval('$a=1;');

更多相关技术文章,请访问PHP中文网

Verwandte Etiketten:
php
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage