2010-10-09 60 views
0

你好,我終於做了一個很好的完美的語言系統,現在我正試圖修復我的模板系統來處理這種新的語言系統= P 我想更換至$標籤[「$ thepreviousvalue」],所以我做了如下代碼

preg_replace("/<LANGUAGE value=\"^[a-zA-Z0-9_]{1,}$\">/si", ''. $langvals['$1'] .'', $data); 

,但它不工作,我敢打賭,我的正則表達式中的薄弱知識是問題。

+0

您可以通過DOM解析器輕鬆實現這一點,並且更安全。 – Gordon 2010-10-09 09:49:20

回答

1
preg_replace('/your_regex/e', '$var[\'$1\']', $string); 

你的情況:

preg_replace('/<LANGUAGE value="([a-z0-9_]+?)">/ei', '$langvals[\'$1\']', $data); 

您可以在php.net閱讀更多關於 「e」 的修改。

此外,我修復了你的正則表達式。

+0

OOOO是的作品<3愛亞布 – SAFAD 2010-10-09 09:43:58

+1

*(建議閱讀)* [正則表達式注射(PDF)](http://hauser-wenz.de/playground/papers/RegExInjection.pdf) – Gordon 2010-10-09 09:47:42

+0

哦戈登,謝謝你這本書...它有很好的信息知道,但是,我認爲這裏沒有風險......我用它的價值取代了語言標籤這就是所有,並且沒有發佈或獲取這裏,只是在模板中經常使用.. 。也許你有另一個想法 – SAFAD 2010-10-09 09:52:30