intenta escapando las \&, ademas no se si un "conjunto de letras minusculas" esta bien representado con [a-z].. esto (por lo que tengo entendido) es SOLO 1 letra.. deberia ser [a-z]{1,10}, para que haya desde 1 hasta 10 letras en ese sector de la cadena..., ademas sid=54654654654&ord=nombre&orden=1... ahi no comienza con cualquier caracter y sigue la &... si no que comienza con un GRUPO de caracteres y luego si esta la &..., si "sid=" esta siempre en la expresion ponelo tal cual...
Código PHP:
<?php
if(eregi("^.{4}[0-9]{11}(&ord=)[a-z]*(&orden=)(-1|1|0)$","sid=54654654654&ord=nombre&orden=1")) {
echo 'ok';
}
else { echo 'error'; }
?>
Esa la probe y funciona OK, fijate si te sirve, la explico:
La cadena comienza con 4 caractes cualquiera
^.{4}
luego contiene 11 numeros
[0-9]{11}
luego contiene la cadena de texto &ord=
(&ord=)
le sige 1 o más letras en minuscula
[a-z]*
luego el grupo de caracteres &orden=
(&orden=)
y debe terminar con un -1, 1 o 0...
(-1|1|0)$
Salute.