title: preg_grep multiple words without order
body: <p>I am attempting to search an array using preg_grep for any values which contain <strong>all</strong> the words listed in my pattern, in any order.</p>
  
  <p>Assuming the words I want to search for are as follows:
  apple
  pear
  banana</p>
  
  <p>I have tried:</p>
  
  <pre><code>$result = preg_grep("/(apple|pear|banana)/i", $array);
  </code></pre>
  
  <p>Which returns strings that contain any of the three words</p>
  
  <pre><code>$result = preg_grep("/(apple.*pear.*banana)/i", $array);
  </code></pre>
  
  <p>Which returns strings that contain all 3, but they must be in order.</p>
  
  <p>How to perform unordered preg_grep?</p>