我在轉換以下函式時遇到困難
preg_replace("/{(.*?)}/e", '1', $data)
使用preg_replace_callback
。我已經試過了,但我不知道我應該把'$1'
preg_replace_callback('/{( .*? )}/', function ($matches) {
return $matches[0] 。
}, $data)。)
如果有任何幫助,我們將非常感激?
uj5u.com熱心網友回復:
你可以使用$GLOBALS Superglobal陣列來訪問全域變數:
preg_replace_callback('/{( .*? )}/', function ($matches) {
return $GLOBALS[$matches[1] ] 。
}, $data)。)
請看PHP演示:
$data = 'Some {abc} here';
$abc = "Word"/span>;
echo preg_replace_callback('/{(.*? )}/', function ($matches) {
return $GLOBALS[$matches[1] ] 。
}, $data)。)
輸出:
Some Word here
uj5u.com熱心網友回復:
從PHP7.4開始,使用箭頭函式而不是傳統的回呼函式可以訪問呼叫preg_replace_callback陳述句的相同范圍。
preg_replace_callback('~{( .*? )}~', fn($m) => ${$m[1]}, $data)。)
這樣你就可以避免使用超全域$GLOBALS,其中的背景關系可能是不同的(變數名稱相同但數值完全不同)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/323793.html
標籤:
