php preg_replace function wrong result
<p>I am trying to remove (most) special chars from a user given $_POST string, before inserting it into the database, with the following preg_replace function:</p>

<pre><code>preg_replace('/[^a-zA-Z0-9\-._äöü]/', '', $description);
</code></pre>

<p>Now, when entering this for $description:</p>

<pre><code>abc !"§$%&amp;/()=?`*'#+´ß
</code></pre>

<p>The result is just:</p>

<pre><code>?
</code></pre>

<p>Why is the function removing abc, but is keeping the '?', which is not in my whitelist of preg_replace?
Any answers are much apreciated.</p>