[已解決]我需要實現刪除正則表達式模式,該模式與在內容中的多個位置強分佈的多行匹配,但要排除第一個起始關鍵字START_KEY_ONE和最後結束關鍵字END_KEY_ONE之間的部分。PHP排除多行出現的多行模式
一般來說,這裏是例子的代碼:
$content = <<<EOS
Line 1
Line 2
/* START_KEY_ONE */
Line 3
Line 4
Line 5
/* END_KEY_ONE */
Line 6
Line 7
/* START_KEY_TWO */
Line 8
/* END_KEY_TWO */
Line 9
Line 10
/* START_KEY_ONE */
Line 11
Line 12
/* END_KEY_ONE */
Line 13
/* START_KEY_TWO */
Line 14
/* END_KEY_TWO */
Line 15
EOS;
// $needle = '#/\* START_KEY_ONE.*END_KEY_ONE \*/\R#s'; // non working pattern
$needle = '#/\* START_KEY_ONE.*?END_KEY_ONE \*/\R#s'; // working pattern
echo preg_replace($needle,'',$content);
而不是這個(工作模式):
Line 1
Line 2
Line 6
Line 7
/* START_KEY_TWO */
Line 8
/* END_KEY_TWO */
Line 9
Line 10
Line 13
/* START_KEY_TWO */
Line 14
/* END_KEY_TWO */
Line 15
我在得到這個(非工作模式):
Line 1
Line 2
Line 13
/* START_KEY_TWO */
Line 14
/* END_KEY_TWO */
Line 15
謝謝!你發現缺少細節(問號在模式中間)。 解決的問題(空字符串\ s和轉義斜槓沒有影響我的原始模式)。 – urosevic 2014-11-01 09:51:43
@urosevic歡迎:) – vks 2014-11-01 09:52:41
它給你一個空行.. – 2014-11-01 09:54:53