Grep any whitespace character including newline in single pattern
<p>I'm trying to make 'perfect' command to show any .php file in dir or subdirs that contain <code>eval</code> code.</p>

<p>Since there are many many false positives, I'm after solution that would strip at least most obvious of them - so my target is: </p>

<p><strong>word eval, followed by any whitepace char including newline zero to unlimited times, followed by open bracket char <code>(</code>;</strong></p>

<p>Here are my shots:</p>

<p><code>find . -type f -exec grep -l "eval\s*(" {} \; | grep ".php"</code></p>

<p>Works great <strong>but</strong> somehow <code>\s*</code> here doesn't match newline characters, so</p>

<pre><code>eval

("some nasty obfuscated code");
</code></pre>

<p>is bellow the radar.</p>

<p>I've also tried with:</p>

<p><code>find . -type f -exec grep -l "eval[[:space:]]*(" {} \; | grep ".php"</code></p>

<p>with same results.</p>