|Preg replace help?|
i need help with my preg_replace, basically i am trying to replace everything except RFC 3986 valid chars
$User_URL=preg_replace('/[^A-Z, a-z, 0-9, -, ., _, ~, :, /, ?, #, [, ], @, !, $, &, ', (, ), *, +, ,, ;,=,%]/', '', $User_URL);
You need to escape special characters which have meaning within regular expressions, also you are not actually building an array here, so no need to seperate each character with a comma. So I think this should cover it:
$User_URL=preg_replace('/[^A-Za-z0-9\-\._\~\:\/\?#\[\]@\!\$&\'\(\)\*\+,;\=%]/', '', $User_URL);
Though I would have to ask, won't the replacement butcher the url? Would you not be able to just use rawurlencode() [php.net] or urlencode() [php.net] instead?