php
  • regex
  • 2011-11-30 60 views 1 likes 
    1

    我有一個這樣的字符串:正則表達式 - 得到一個字符串中的所有比賽

    $sContent = "t('Dashboard').' '.t('Settings Test').' '.t('My Test').' '.t('Other test')"; 
    

    我需要的是一個正則表達式(「」),其獲得每個獨立的T值,如:

    t('Dashboard') 
    t('Settings Test') 
    ... 
    

    在PHP我用:

    $sRegExp = '/t\((.*)\)/i'; 
    preg_match_all($sRegExp, $sContent, $aResults); 
    

    我與主串相同的結果:

    t('Dashboard').' '.t('Settings Test').' '.t('My Test').' '.t('Other test') 
    
    +2

    請編輯您的帖子... –

    +1

    請看[常見問題](http://stackoverflow.com/faq) –

    回答

    3

    您可以使用:

    $sRegExp = '/t\((.*?)\)/ 
    

    $sRegExp = '/t\(([^\)]*)\)/ 
    
    +0

    posessive量詞很酷的stuf。 – dhblah

    0

    我會跟explode功能嘗試:

    $sContent = "t('Dashboard').' '.t('Settings Test').' '.t('My Test').' '.t('Other test')"; 
    $sContents = explode(".' '.", $sContent); 
    
    1

    好了,讓我們假設你永遠不會使用'在那個文本里面。那麼這應該有所幫助。

    preg_match_all('/t\(\'(?<=t\(\')([^\']*(?!=\'\)))\'\)/', $subject, $result, PREG_PATTERN_ORDER); 
    $result = $result[0]; 
    

    好吧,如果你想使用「符號,則必須用\逃避它,然後嘗試使用以下方式

    /t\(\'(?<=t\(\')(((?=\\\\)\\\\\'|[^\'])*(?!=\'\)))\'\)/ 
    
    相關問題