View Single Post
  #1  
Old 12-11-2011, 06:58 PM
Chompy Chompy is offline
¯\(º_o)/¯
Chompy's Avatar
Join Date: Sep 2006
Location: Norway
Posts: 2,815
Chompy is just really niceChompy is just really niceChompy is just really nice
Send a message via MSN to Chompy
String and number range checks

This is a function I made while working on my RegEx parser which is soon finished. I thought I would release this so others could perhaps use it for validation and checks etc. Good example: Limit and validation of input
The use of ascii values is pretty obvious,
NPC Code:

if ("a" == "A") {
echo("a equals A");
}



Here's the code. Haven't heavy tested it so might my bugs.
PHP Code:
// V1.0
function onCreated() {
  
this.NR "48,49,50,51,52,53,54,55,56,57";
  
this.az "97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122";
  
this.AZ "65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90";
}
public function 
rangecheck(rangecheckstring) {
  if (
rangecheck.charat(0) == "[")
    
rangecheck rangecheck.substring(1rangecheck.length()-2);
  
temp.hyphens rangecheck.positions("-");
  
temp.ranges = {};
  for(
temp.temp.hyphens) {
    
temp.ranges.add(rangecheck.substring(temp.i-13));
  }
  
temp.check false;
  for(
temp.range temp.ranges) {
    
temp.value1 temp.range.charat(0);
    
temp.value2 temp.range.charat(2);
    
    
temp.array = "error";
    
    if ((
getascii(temp.value1in this.NR) && (getascii(string) in this.NR)) {
      
temp.array = this.NR;
    }
    else if (
getascii(temp.value1in this.az) {
      if ((
getascii(temp.value2in this.az) && (getascii(string) in this.az)) {
        
temp.array = this.az;
      }
    }
    else if ((
getascii(temp.value1in this.AZ) && (getascii(string) in this.AZ)) {
      
temp.array = this.AZ;
    }
    else if (
temp.array == "error") continue;

    
temp.startpoint temp.array.index(getascii(temp.value1));
    
temp.endpoint temp.array.index(getascii(temp.value2));

    
temp.arraycheck temp.array.subarray(
      
temp.startpoint, (temp.endpoint-temp.startpoint+1)
    );
    if (
getascii(string) in temp.arraycheck) {
      
temp.check true;
      break;
    }
  }
  return 
temp.check;
}

public function 
is_nr(input) {
  return (
getascii(inputin this.NR);
}
public function 
is_az(input) {
  return (
getascii(inputin this.az);
}
public function 
is_AZ(input) {
  return (
getascii(inputin this.AZ);

Examples:
PHP Code:
/*
    rangecheck(range, string);

    Takes a range and check if the string character is within this range

    ranges:
      0-9: any number between 0 and 9
      a-z: any character between lowercase a and lowercase z
      A-Z: any character between uppercase A and uppercase Z

      you write ranges like this:
        [0-4a-f]: would check if character is one of 0,1,2,3,4 or a,b,c,d,e,f
        [0-9a-fA-F]: would check if character is between 0 and 9, a and f and A and F
        [1-3a-cA-C]: would check if character is one of 1,2,3,a,b,c,A,B,C

      string: a single character, a letter or number
*/
function onCreated() {
  
this.join("module_regex_rangecheck");

  echo(
rangecheck("[0-9a-f]""f")); // true, f is within the a-f range

__________________

Last edited by Chompy; 12-12-2011 at 04:31 AM.. Reason: See PFA's post beneath ^^ removed lower to upper ranges
Reply With Quote