php的eval函數參數中存在“=”會報錯,如何解決

來源:互聯網
上載者:User
比如這樣一句PHP語句 eval("$a=1");
在運行時會出現這樣的錯誤

Notice: Undefined variable: a in D:\test.php on line 4Parse error: syntax error, unexpected '=', expecting end of file in D:\test.php(4) : eval()'d code on line 1PHP Notice:  Undefined variable: a in D:\test.php on line 4PHP Parse error:  syntax error, unexpected '=', expecting end of file in D:\test.php(4) : eval()'d code on line 1

這是怎麼回事?要如何解決?

回複內容:

比如這樣一句PHP語句eval("$a=1");
在運行時會出現這樣的錯誤

Notice: Undefined variable: a in D:\test.php on line 4Parse error: syntax error, unexpected '=', expecting end of file in D:\test.php(4) : eval()'d code on line 1PHP Notice:  Undefined variable: a in D:\test.php on line 4PHP Parse error:  syntax error, unexpected '=', expecting end of file in D:\test.php(4) : eval()'d code on line 1

這是怎麼回事?要如何解決?

這是因為雙引號裡的變數名被轉義了。
PHP允許我們在雙引號串中直接包含字串變數,雙引號串中的變數將被解釋而且替換,而單引號串中的內容總被認為是一般字元。例如:

$foo = 2; echo "foo is $foo"; // 列印結果: foo is 2 echo 'foo is $foo'; // 列印結果: foo is $foo echo "foo is $foo\n"; // 列印結果: foo is 2 (同時換行) echo 'foo is $foo\n'; // 列印結果: foo is $foo\n 

因此字串"$a=1"中的$a並不會被識別為一個字串,而是被當成了一個變數,PHP會將則會將其解釋替換。但是$a又沒有被定義,所以會提示變數沒有定義。$a被替換後,就成了一個字面值,將一個數字賦給一個常量,當然會提示語法錯誤
比較好的做法是將雙引號改成單引號eval("$a=1;");,或者進行轉義eval("\$a=1;");

另外注意字串語句結尾的分號不要忘了,這也是錯誤的原因之一。

eval("\$a=1");

例子:

  1 

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

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.