我想preg_replace一些文本,但只有當它沒有評論。下面是一個給定文本的例子:preg_replace在某些條件下
// delete_me('First');
delete_me('Second');
/* delete_me('Third'); */
delete_me('Fourth'); // Some comment behind a command.
/* Tiny bit of comment */ delete_me('Fifth');
現在在這個例子中,我只想要第二,第四和第五行被替換。我想用新的參數替換參數。所有文本都在一個大字符串中,由換行符分隔。
我確實有一些preg_replaces刪除評論部分,但因爲我不想刪除它們沒有太大的用處,但也許它可以幫助有人幫助我。
$text = preg_replace("/\/\/(.*)/", $replace, $text);
$text = preg_replace('!/\*(.*)\*/!s', $replace, $text);
任何人都可以幫助我取代PHP中未評論的行的給定參數嗎?謝謝!
我認爲這是不可能的正則表達式。它與HTML和正則表達式一樣。你不能簡單地匹配評論,因爲它們可能是一個字符串,你不能匹配字符串,因爲他們可能在評論。你需要的是PHP Tokenizer。 – TimWolla 2012-01-31 12:09:55
這是不正確的。你可以在合理範圍內匹配字符串,請參閱下面的評論。 – Shane 2012-01-31 12:11:34
@TimWolla,但你可以使用正則表達式作爲一個簡單的分詞器... – mvds 2012-01-31 12:17:33