<?php
# The problem, hyphen use within class in incorrect position.
var_dump(preg_match('~[0-9\w-.]*~', ''));
# The fix, or we escape the hyphen or we put it last
var_dump(preg_match('~[0-9\w\-.]*~', ''));
var_dump(preg_match('~[0-9\w-.-]*~', ''));
Warning: preg_match(): Compilation failed: invalid range in character class at offset 6 in /in/05LeL on line 3
bool(false)
int(1)
Warning: preg_match(): Compilation failed: invalid range in character class at offset 6 in /in/05LeL on line 6
bool(false)