我使用preg_replace()
將{#page}
替換爲變量$page
的實際值。當然,我有很多的{#variable}
,不只是{#page}
。無法將preg_replace()與修飾符/ e轉換爲preg_replace_callback()
例如:
$uri = "module/page/{#page}";
$page = 3;
//preg_replace that its working now
$uri_to_call = $uri_rule = preg_replace('/\{\#([A-Za-z_]+)\}/e', "$$1", $uri);
而我得到的結果
"module/page/3";
更新到PHP 5.4後,我得到的錯誤:
Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead
而且我不知道如何改寫preg_replace()
與preg_replace_callback()
。
我已經嘗試從SO Replace preg_replace() e modifier with preg_replace_callback
像這樣遵循了答案:
public static function replace_vars($uri) { //$uri_rule = preg_replace('/\{\#([A-Za-z_]+)\}/e', "$$1", $uri);
return preg_replace_callback('/{\#([A-Za-z_]+)\}/',
create_function ('$matches', 'return $$matches[1];'), $uri);
}
但我也得到一個警告:
Notice: Undefined variable: page
這實際上是真實的,因爲頁面變量是沒有設置運行時創建的功能。
任何人都可以幫助我嗎?
@ Rizier123我相信,編輯後,這個問題的不重複 – ntan
你的問題是,在你的匿名函數變量變量超出範圍 – Rizier123
@ Rizier123我知道,和變量$網頁和所有其他是動態variables.So必有我的$值page.Thanks – ntan