2010-04-12 52 views
0

正則表達式讓我哭,所以,我來這裏尋求幫助。正則表達式更改方法調用參數

我在找一些小貼士尋找&替換爲Panic's Coda。我知道F & R 是相當先進的,但我只是尋找最好的方式來做到這一點。 我想重寫一個'模板引擎'(非常基本),我正在用PHP(CodeIgniter)編寫一個 web應用程序。

目前,我打電話給我的模板像這樣:

$this->load->view('subviews/template/headerview'); 
$this->load->view('subviews/template/menuview'); 
$this->load->view('subviews/template/sidebar'); 
$this->load->view('The-View-I-Want-To-Load'); // This is the important line 
$this->load->view('subviews/template/footerview'); 

然而,它使用我想 加載了一個不同的頁面,每次五行代碼,在每個不同的控制器的效率不高。所以我重寫這樣的:

$data['view'] = 'The-View-I-Want-To-Load'; 
$this->load->view('template',$data); 

,如果我需要做的設計可以 輕易地從的template.php視圖文件來完成(其中包含標題,菜單,工具條的意見有大的變化這樣等等)。

但是我使用了以前的5行代碼,在很多不同的控制器和函數中使用了很多。所以,我的問題是---我如何 找到並替換舊的模板引擎(5行代碼)爲新的 之一 - 用重要的,唯一的 行中的視圖名稱替換$中的一個數據['視圖]?

這是否有任何意義?如果沒有,我會嘗試重新措辭!我的意思是,有沒有通過正則表達式或其他方法做到這一點?或者我在這裏完全錯誤的線路?

+0

代替做這五行總是發生在相同的順序?或者換句話說,我怎麼知道哪一個包含你想要加載的視圖? – 2010-04-12 11:15:49

+0

它們總是以相同的順序出現。第四行總是包含我想要加載到主內容區域的視圖。所以第四行是動態的,否則第1,2,3行和第5行總是保持不變。 – Jack 2010-04-12 11:17:59

回答

1

您正則表達式將是這個樣子:

\$this->load->view\('subviews/template/headerview'\);\n\$this->load->view\('subviews/template/menuview'\);\n\$this->load->view\('subviews/template/sidebar'\);\n\$this->load->view\('([^']*)'\);\n\$this->load->view\('subviews/template/footerview'\); 

\$data['view'] = '$1';\n\$this->load->view('template',\$data); 
+0

不錯的一個!我將首先在一個示例PHP文件上進行測試,然後很快回來。 – Jack 2010-04-12 11:19:53

+0

沒有多少運氣。發現正則表達式從來沒有發現任何東西... – Jack 2010-04-12 11:23:31

+0

我的壞,今天早上沒有足夠的咖啡。沒有在正則表達式模式下,我會再試一次! :D – Jack 2010-04-12 11:24:38