php字串轉成可執行程式碼
在php中將字串轉為可執行的程式碼,可以通過使用php中的「eval()」函數來實現。
eval說明與用法
eval — 把字串作為PHP程式碼執行
eval ( string $code ) : mixed
註:函數eval()語言結構是 非常危險的, 因為它允許執行任意 PHP 程式碼。 它這樣用是很危險的。 如果您仔細的確認過,除了使用此結構以外 別無方法, 請多加注意,不要允許傳入任何由使用者 提供的、未經完整驗證過的資料 。
eval引數
code:
需要被執行的字串
程式碼不能包含開啟/關閉 PHP tags。比如, 'echo "Hi!";' 不能這樣傳入: '<?php echo "Hi!"; ?>'。但仍然可以用合適的 PHP tag 來離開、重新進入 PHP 模式。比如 'echo "In PHP mode!"; ?>In HTML mode!<?php echo "Back in PHP mode!";'。
除此之外,傳入的必須是有效的 PHP 程式碼。所有的語句必須以分號結尾。比如 'echo "Hi!"' 會導致一個 parse error,而 'echo "Hi!";' 則會正常執行。
return 語句會立即中止當前字串的執行。
程式碼執行的作用域是呼叫 eval() 處的作用域。因此,eval() 裡任何的變數定義、修改,都會在函數結束後被保留。
eval返回值
eval() 返回 NULL,除非在執行的程式碼中 return 了一個值,函數返回傳遞給 return 的值。 PHP 7 開始,執行的程式碼裡如果有一個 parse error,eval() 會丟擲 ParseError 異常。在 PHP 7 之前, 如果在執行的程式碼中有 parse error,eval() 返回 FALSE,之後的程式碼將正常執行。無法使用 set_error_handler() 捕獲 eval() 中的解析錯誤。
eval使用範例
<?php $string = 'cup'; $name = 'coffee'; $str = 'This is a $string with my $name in it.'; echo $str. "n"; eval("$str = "$str";"); echo $str. "n"; ?>
以上例程會輸出:
This is a $string with my $name in it.
This is a cup with my coffee in it.
以上就是php字串轉成可執行程式碼的詳細內容,更多請關注TW511.COM其它相關文章!