2016-05-02 14 views
-1

Wie man einen regulären Ausdruck in preg_match_all "und"?Wie man einen regulären Ausdruck in preg_match_all "und"

The mouse to nibble the cork from the bottle russia king. 

$n = preg_match_all("/cork&bottle/i", mb_strtolower($y['foo'], 'UTF-8'), $matches); 

/cork&bottle/i Funktioniert nicht

+0

Muss die Auswertung in der angegebenen Reihenfolge erfolgen oder ist es in Ordnung, in beliebiger Reihenfolge zu laufen? – joncloud

Antwort

0

Dies ist die Art, wie ich verwenden würde:

$string = 'The mouse to nibble the cork from the bottle russia king.'; 
preg_match_all("/^(?=.*(cork))(?=.*(bottle))/i", $string, $matches); 
print_r($matches); 

Ausgang:

Array 
(
    [0] => Array 
     (
      [0] => 
     ) 

    [1] => Array 
     (
      [0] => cork 
     ) 

    [2] => Array 
     (
      [0] => bottle 
     ) 

) 

Erläuterung:

/     : regex delimiter 
    ^    : begining of line 
    (?=    : start lookahead 
     .*   : 0 or more any character 
     (\bcork\b) : capture group #1 that contains "cork" with word boundaries 
    )    : end of look ahead 
    (?=    : start lookahead 
     .*   : 0 or more any character 
     (\bottle\b) : capture group #2 that contains "bottle" with word boundaries 
    )    : end of look ahead 
/i     : regex delimiter, case insensitive