2012-07-17 71 views
1

你好,大家好我對PHP的後續代碼PHP preg_replace_callback一個以上的正則表達式

return preg_replace_callback("#\{gallery: '(.+?)'\}#i", 
    function($i) 
    { 
     $oGallery = new Gallery($i[1]); 
     $oGallery->PublicSide(); 
    }, $string); 

現在我想添加以下代碼行:

都說,我想允許用戶選擇,如果他想目錄添加到庫中,所以我做的:

"#\{gallery: '(.+?)' dir: '(.+?)')\}#i" 

所以用戶有藥水的事:{gallery: 'folder'}{gallery: 'folder' dir: '1'}

我會如何在正則表達式方面做到這一點,因此即使目錄選項不存在,替換也會發生?提前致謝!

回答

1

讓它可選

"#\{gallery: '(.+?)'(?: dir: '(.+?)')?\}#i" 

(?:text)創建一個非捕獲組

加入?組使得可選

+0

這工作就像一個魅力了!非常感謝 – 2012-07-17 01:08:40

+0

還有一個問題,它適用於我的PHP 5.3本地主機,但似乎無法在我的5.2.17服務器上工作,似乎是單引號,任何想法是怎麼回事? – 2012-07-17 03:32:23

相關問題