#import "Utility.h"@implementation Utility+(NSString *)createMD5:(NSString *)signString{ const char*cStr =[signString UTF8String]; unsigned char result[16]; CC_MD5(cStr, strlen(cStr), result); return[NSString stringWithFormat: @"%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X", result[0], result[1], result[2], result[3], result[4], result[5], result[6], result[7], result[8], result[9], result[10], result[11], result[12], result[13], result[14], result[15] ];}+(NSString *)createPostURL:(NSMutableDictionary *)params{ NSString *postString=@""; for(NSString *key in [params allKeys]) { NSString *value=[params objectForKey:key]; postString=[postString stringByAppendingFormat:@"%@=%@&",key,value]; } if([postString length]>1) { postString=[postString substringToIndex:[postString length]-1]; } return postString;}+(NSString *)getCurrentDate{ NSDateFormatter *dateFormatter=[[[NSDateFormatter alloc] init] autorelease]; [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; return [dateFormatter stringFromDate:[NSDate date]];}+(BOOL) connectedToNetwork{ // Create zero addy struct sockaddr_in zeroAddress; bzero(&zeroAddress, sizeof(zeroAddress)); zeroAddress.sin_len = sizeof(zeroAddress); zeroAddress.sin_family = AF_INET; // Recover reachability flags SCNetworkReachabilityRef defaultRouteReachability = SCNetworkReachabilityCreateWithAddress(NULL, (struct sockaddr *)&zeroAddress); SCNetworkReachabilityFlags flags; BOOL didRetrieveFlags = SCNetworkReachabilityGetFlags(defaultRouteReachability, &flags); CFRelease(defaultRouteReachability); if (!didRetrieveFlags) { printf("Error. Could not recover network reachability flags\n"); return NO; } BOOL isReachable = ((flags & kSCNetworkFlagsReachable) != 0); BOOL needsConnection = ((flags & kSCNetworkFlagsConnectionRequired) != 0); return (isReachable && !needsConnection) ? YES : NO;}// Direct from Apple. Thank you Apple+ (BOOL)addressFromString:(NSString *)IPAddress address:(struct sockaddr_in *)address{ if (!IPAddress || ![IPAddress length]) return NO; memset((char *) address, sizeof(struct sockaddr_in), 0); address->sin_family = AF_INET; address->sin_len = sizeof(struct sockaddr_in); int conversionResult = inet_aton([IPAddress UTF8String], &address->sin_addr); if (conversionResult == 0) {NSAssert1(conversionResult != 1, @"Failed to convert the IP address string into a sockaddr_in: %@", IPAddress); return NO; } return YES;}+ (NSString *) getIPAddressForHost: (NSString *) theHost{ theHost=[theHost substringFromIndex:7]; //NSLog(@"%@",theHost);struct hostent *host = gethostbyname([theHost UTF8String]); if (!host) {herror("resolv"); return NULL; }struct in_addr **list = (struct in_addr **)host->h_addr_list;NSString *addressString = [NSString stringWithCString:inet_ntoa(*list[0]) encoding:NSUTF8StringEncoding];return addressString;}+ (BOOL) hostAvailable: (NSString *) theHost{ NSString *addressString = [self getIPAddressForHost:theHost]; if (!addressString) { printf("Error recovering IP address from host name\n"); return NO; } struct sockaddr_in address; BOOL gotAddress = [self addressFromString:addressString address:&address]; if (!gotAddress) {printf("Error recovering sockaddr address from %s\n", [addressString UTF8String]); return NO; }SCNetworkReachabilityRef defaultRouteReachability = SCNetworkReachabilityCreateWithAddress(NULL, (struct sockaddr *)&address); SCNetworkReachabilityFlags flags;BOOL didRetrieveFlags =SCNetworkReachabilityGetFlags(defaultRouteReachability, &flags); CFRelease(defaultRouteReachability); if (!didRetrieveFlags) { printf("Error. Could not recover network reachability flags\n"); return NO; } BOOL isReachable = flags & kSCNetworkFlagsReachable; return isReachable ? YES : NO;;}//通過區分字串+(BOOL)validateEmail:(NSString*)email{ if((0 != [email rangeOfString:@"@"].length) && (0 != [email rangeOfString:@"."].length)) { NSCharacterSet* tmpInvalidCharSet = [[NSCharacterSet alphanumericCharacterSet] invertedSet]; NSMutableCharacterSet* tmpInvalidMutableCharSet = [[tmpInvalidCharSet mutableCopy] autorelease]; [tmpInvalidMutableCharSet removeCharactersInString:@"_-"]; NSRange range1 = [email rangeOfString:@"@" options:NSCaseInsensitiveSearch]; //取得使用者名稱部分 NSString* userNameString = [email substringToIndex:range1.location]; NSArray* userNameArray = [userNameString componentsSeparatedByString:@"."]; for(NSString* string in userNameArray) { NSRange rangeOfInavlidChars = [string rangeOfCharacterFromSet: tmpInvalidMutableCharSet]; if(rangeOfInavlidChars.length != 0 || [string isEqualToString:@""]) return NO; } //取得網域名稱部分 NSString *domainString = [email substringFromIndex:range1.location+1]; NSArray *domainArray = [domainString componentsSeparatedByString:@"."]; for(NSString *string in domainArray) { NSRange rangeOfInavlidChars=[string rangeOfCharacterFromSet:tmpInvalidMutableCharSet]; if(rangeOfInavlidChars.length !=0 || [string isEqualToString:@""]) return NO; } return YES; } else { return NO; }}//利用Regex驗證+(BOOL)isValidateEmail:(NSString *)email { NSString *emailRegex = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}"; NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex]; return [emailTest evaluateWithObject:email];}+(BOOL)isValidateString:(NSString *)myString{ NSCharacterSet *nameCharacters = [[NSCharacterSet characterSetWithCharactersInString:@"_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"] invertedSet]; NSRange userNameRange = [myString rangeOfCharacterFromSet:nameCharacters]; if (userNameRange.location != NSNotFound) { //NSLog(@"包含特殊字元"); return FALSE; }else{ return TRUE; }}