2009-12-30 109 views
0

我試圖修改結構這樣準系統例如PHP腳本的一部分自修改PHP腳本

<-- part A --> 
function modify_B($string) 
{ 
    some code to modify part B 
} 
<-- end A --> 

<-- part B --> 
<container>some XML</container> 
<-- end B --> 

<-- part C --> 
<-- end C --> 

我想在不改變文件的其餘部分修改部分B,因爲A和B是腳本的邏輯,不應該改變。

有人能幫助我嗎? 非常感謝您的幫助。

+1

初看起來,這聽起來像一個糟糕的想法™。你能詳細說明你最終想達到什麼目的,你需要修改XML的內容嗎?對於你想要做的比自修改腳本有更好的解決方案。 – deceze

+0

爲什麼不能將B部分放在單獨的文件中? – Lukman

+0

也許有更好的方法來完成任務。我的意圖是實現一個小文件的網站。所以需要使用一個文件,而不是一個!內容是動態的:事實上,A部分是一個php腳本,其行爲就像一個基本的內容編輯器。 – Antonio

回答

1

從你的例子看來,它只是一些字符串數據XML。因此,以某種方式將內容加載到字符串中(可以使用標準字符串表示法設置變量,或者從單獨文件的內容中讀取它),根據您的意願修改字符串,然後將字符串回顯到輸出中。那麼這不是一個自我修改的問題了。這只是一個數據驅動的問題。

0

您的意思是XML是否在您的PHP <? ?>腳本標記之外?所以你想修改即將由PHP腳本輸出的文本?

如果是這種情況,請記住腳本標記之外的任何內容都只是作爲字符串來處理,而PHP輸出的結果與您編寫的echo $string;一樣。因此,只需將您更改的數據保存在字符串變量中並進行回顯即可。

0

或者,如果您需要更改中的持久性,請將「B」放入文件幷包含或讀取它。

0

你不應該寫自修改代碼(除非你正在編寫程序集),它可能會導致各種問題,例如考慮如果有一個破壞文件中的代碼的bug會發生什麼。

從代碼分割你的數據拿出來和一個require_once命令加載

然後,您可以使用標準的文件讀寫命令的數據進行編輯http://www.php.net/manual/en/book.filesystem.php

...或由於數據仍然好是XML,將文件保存爲XML文件並使用簡單的xml來保存數據http://php.net/manual/en/book.simplexml.php

+0

我從評論中看到,您希望爲您的網站使用單個文件,而且您可以做到這一點,這將變得更加複雜,您將不得不做一些定製的編碼來實現它,但是您確實是真的要做的是將整個文件讀入一個var並在寫出之前進行操作。無論你採取什麼方法,你都會反對練習練習。編輯:哎呀,並不意味着necro問題! – Sqoo

+0

以及我有一些也許不能自我修改,但自我生成的代碼爲一個動態如果我然後只是執行(顯然該代是在巨大的ifs負載,所以沒有任何意外可以去那裏。例如說你有一個日期和日期範圍列表,你想檢查一個日期是否適合它,如果不知道列表在運行時將會很難,如果你知道的唯一的事情是你有一個逗號分開的日期和憤怒的名單。我只是確定「單個或範圍」,並寫出一個條件語句並通過OR進行連接。 – My1