Se puede convertir en un bucle condicional con for:
Código PHP:
<?
$number = $_POST["bloque"];
$codarea = $_POST["codarea"];
$minimo = 2;
$maximo = 4;
$encontrado = false;
//database connection settings
define('DB_HOST', 'localhost'); // database host
define('DB_USER', 'lalalalala'); // username
define('DB_PASS', 'turinturin'); // password
define('DB_NAME', 'queseyo'); // database name
$connect = @mysql_connect(DB_HOST,DB_USER,DB_PASS) or die ("Can't connect to database");
mysql_select_db(DB_NAME,$connect);
if (strlen($number) >= $maximo){
for ($i = $maximo;$i >= $minimo;$i--){
$eltexto = substr($number,0,$i);
$elsql = "SELECT * FROM identificador WHERE indicativo='$codarea' AND bloque= '$eltexto'";
$qrypub = @mysql_query($elsql,$connect) or die ("Wrong Query");
$row = mysql_fetch_array($qrypub);
$porahi = $row['BLOQUE'];
if ($porahi){
$a = $row['OPERADOR'];
$aa = $row['LOCALIDAD'];
$aaa = $row['INDICATIVO'];
$aaaa = $row['BLOQUE'];
echo "$a - $aa - $aaa - $aaaa <br>";
$encontrado = true;
break;
}
}
} else {
echo "numero corto";
}
if ($encontrado === false) {
echo "no hay nada";
}
mysql_close($connect);
?>
Lo que he añadido también, muy importante, un control para asegurarnos que la cadena tiene la longitud adecuada. También tendrías que comprobar que los datos sean los que esperas, por lo que dices una secuencia de números... siempre tienes que esperar lo inesperado.