Tach!
Du willst aber, dass auch davor oder danach etwas stehen darf. Also ein _beliebiges Zeichen_ (dafür steht der Punkt) darf _kein_ Mal oder beliebig oft (dafür steht der Stern) vorkommen. Deshalb:
if ( preg_match('~^.*[0-9]{5,10}.*$~', $text) )Es reicht auch, im Originalausdruck einfach das ^ und $ wegzulassen. (Und [0-9] könnte man noch zu \d abkürzen.)
Achja, die Begrenzung auf maximal 10 hab ich übersehen. \D* steht für alles was keine Ziffer ist und davon beliebig viele (auch keine). Das nach dem ^ und vor dem $ scheiben, sollte es tun.
dedlfix.