Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- class idnhandler
- {
- private $_punycode_prefix = "xn--";
- private $_invalid_ucs = 2.14748e+009;
- private $_max_ucs = 1114111;
- private $_base = 36;
- private $_tmin = 1;
- private $_tmax = 26;
- private $_skew = 38;
- private $_damp = 700;
- private $_initial_bias = 72;
- private $_initial_n = 128;
- private $_sbase = 44032;
- private $_lbase = 4352;
- private $_vbase = 4449;
- private $_tbase = 4519;
- private $_lcount = 19;
- private $_vcount = 21;
- private $_tcount = 28;
- private $_ncount = 588;
- private $_scount = 11172;
- private $_error = false;
- private $_api_encoding = "utf8";
- private $_allow_overlong = false;
- private $_strict_mode = false;
- private $NP = array( 'map_nothing' => array( 173, 847, 6150, 6155, 6156, 6157, 8203, 8204, 8205, 8288, 65024, 65025, 65026, 65027, 65028, 65029, 65030, 65031, 65032, 65033, 65034, 65035, 65036, 65037, 65038, 65039, 65279 ), 'general_prohibited' => array( 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 47, 59, 60, 61, 62, 63, 64, 91, 92, 93, 94, 95, 96, 123, 124, 125, 126, 127, 12290 ), 'prohibit' => array( 160, 832, 833, 1757, 1807, 5760, 6158, 8192, 8193, 8194, 8195, 8196, 8197, 8198, 8199, 8200, 8201, 8202, 8203, 8204, 8205, 8206, 8207, 8232, 8233, 8234, 8235, 8236, 8237, 8238, 8239, 8287, 8298, 8299, 8300, 8301, 8302, 8303, 12288, 65279, 65529, 65530, 65531, 65532, 65533, 65534, 65535, 131070, 131071, 196606, 196607, 262142, 262143, 327678, 327679, 393214, 393215, 458750, 458751, 524286, 524287, 589822, 589823, 655358, 655359, 720894, 720895, 786430, 786431, 851966, 851967, 917502, 917503, 917505, 983038, 983039, 1048574, 1048575, 1114110, 1114111 ), 'prohibit_ranges' => array( array( 128, 159 ), array( 8288, 8303 ), array( 119155, 119162 ), array( 57344, 63743 ), array( 983040, 1048573 ), array( 1048576, 1114109 ), array( 64976, 65007 ), array( 55296, 57343 ), array( 12272, 12283 ), array( 917536, 917631 ) ), 'replacemaps' => array( array( 97 ), array( 98 ), array( 99 ), array( 100 ), array( 101 ), array( 102 ), array( 103 ), array( 104 ), array( 105 ), array( 106 ), array( 107 ), array( 108 ), array( 109 ), array( 110 ), array( 111 ), array( 112 ), array( 113 ), array( 114 ), array( 115 ), array( 116 ), array( 117 ), array( 118 ), array( 119 ), array( 120 ), array( 121 ), array( 122 ), array( 956 ), array( 224 ), array( 225 ), array( 226 ), array( 227 ), array( 228 ), array( 229 ), array( 230 ), array( 231 ), array( 232 ), array( 233 ), array( 234 ), array( 235 ), array( 236 ), array( 237 ), array( 238 ), array( 239 ), array( 240 ), array( 241 ), array( 242 ), array( 243 ), array( 244 ), array( 245 ), array( 246 ), array( 248 ), array( 249 ), array( 250 ), array( 251 ), array( 252 ), array( 253 ), array( 254 ), array( 115, 115 ), array( 257 ), array( 259 ), array( 261 ), array( 263 ), array( 265 ), array( 267 ), array( 269 ), array( 271 ), array( 273 ), array( 275 ), array( 277 ), array( 279 ), array( 281 ), array( 283 ), array( 285 ), array( 287 ), array( 289 ), array( 291 ), array( 293 ), array( 295 ), array( 297 ), array( 299 ), array( 301 ), array( 303 ), array( 105, 775 ), array( 307 ), array( 309 ), array( 311 ), array( 314 ), array( 316 ), array( 318 ), array( 320 ), array( 322 ), array( 324 ), array( 326 ), array( 328 ), array( 700, 110 ), array( 331 ), array( 333 ), array( 335 ), array( 337 ), array( 339 ), array( 341 ), array( 343 ), array( 345 ), array( 347 ), array( 349 ), array( 351 ), array( 353 ), array( 355 ), array( 357 ), array( 359 ), array( 361 ), array( 363 ), array( 365 ), array( 367 ), array( 369 ), array( 371 ), array( 373 ), array( 375 ), array( 255 ), array( 378 ), array( 380 ), array( 382 ), array( 115 ), array( 595 ), array( 387 ), array( 389 ), array( 596 ), array( 392 ), array( 598 ), array( 599 ), array( 396 ), array( 477 ), array( 601 ), array( 603 ), array( 402 ), array( 608 ), array( 611 ), array( 617 ), array( 616 ), array( 409 ), array( 623 ), array( 626 ), array( 629 ), array( 417 ), array( 419 ), array( 421 ), array( 640 ), array( 424 ), array( 643 ), array( 429 ), array( 648 ), array( 432 ), array( 650 ), array( 651 ), array( 436 ), array( 438 ), array( 658 ), array( 441 ), array( 445 ), array( 454 ), array( 454 ), array( 457 ), array( 457 ), array( 460 ), array( 460 ), array( 462 ), array( 464 ), array( 466 ), array( 468 ), array( 470 ), array( 472 ), array( 474 ), array( 476 ), array( 479 ), array( 481 ), array( 483 ), array( 485 ), array( 487 ), array( 489 ), array( 491 ), array( 493 ), array( 495 ), array( 106, 780 ), array( 499 ), array( 499 ), array( 501 ), array( 405 ), array( 447 ), array( 505 ), array( 507 ), array( 509 ), array( 511 ), array( 513 ), array( 515 ), array( 517 ), array( 519 ), array( 521 ), array( 523 ), array( 525 ), array( 527 ), array( 529 ), array( 531 ), array( 533 ), array( 535 ), array( 537 ), array( 539 ), array( 541 ), array( 543 ), array( 414 ), array( 547 ), array( 549 ), array( 551 ), array( 553 ), array( 555 ), array( 557 ), array( 559 ), array( 561 ), array( 563 ), array( 953 ), array( 32, 953 ), array( 940 ), array( 941 ), array( 942 ), array( 943 ), array( 972 ), array( 973 ), array( 974 ), array( 953, 776, 769 ), array( 945 ), array( 946 ), array( 947 ), array( 948 ), array( 949 ), array( 950 ), array( 951 ), array( 952 ), array( 953 ), array( 954 ), array( 955 ), array( 956 ), array( 957 ), array( 958 ), array( 959 ), array( 960 ), array( 961 ), array( 963 ), array( 964 ), array( 965 ), array( 966 ), array( 967 ), array( 968 ), array( 969 ), array( 970 ), array( 971 ), array( 965, 776, 769 ), array( 963 ), array( 946 ), array( 952 ), array( 965 ), array( 973 ), array( 971 ), array( 966 ), array( 960 ), array( 985 ), array( 987 ), array( 989 ), array( 991 ), array( 993 ), array( 995 ), array( 997 ), array( 999 ), array( 1001 ), array( 1003 ), array( 1005 ), array( 1007 ), array( 954 ), array( 961 ), array( 963 ), array( 952 ), array( 949 ), array( 1104 ), array( 1105 ), array( 1106 ), array( 1107 ), array( 1108 ), array( 1109 ), array( 1110 ), array( 1111 ), array( 1112 ), array( 1113 ), array( 1114 ), array( 1115 ), array( 1116 ), array( 1117 ), array( 1118 ), array( 1119 ), array( 1072 ), array( 1073 ), array( 1074 ), array( 1075 ), array( 1076 ), array( 1077 ), array( 1078 ), array( 1079 ), array( 1080 ), array( 1081 ), array( 1082 ), array( 1083 ), array( 1084 ), array( 1085 ), array( 1086 ), array( 1087 ), array( 1088 ), array( 1089 ), array( 1090 ), array( 1091 ), array( 1092 ), array( 1093 ), array( 1094 ), array( 1095 ), array( 1096 ), array( 1097 ), array( 1098 ), array( 1099 ), array( 1100 ), array( 1101 ), array( 1102 ), array( 1103 ), array( 1121 ), array( 1123 ), array( 1125 ), array( 1127 ), array( 1129 ), array( 1131 ), array( 1133 ), array( 1135 ), array( 1137 ), array( 1139 ), array( 1141 ), array( 1143 ), array( 1145 ), array( 1147 ), array( 1149 ), array( 1151 ), array( 1153 ), array( 1163 ), array( 1165 ), array( 1167 ), array( 1169 ), array( 1171 ), array( 1173 ), array( 1175 ), array( 1177 ), array( 1179 ), array( 1181 ), array( 1183 ), array( 1185 ), array( 1187 ), array( 1189 ), array( 1191 ), array( 1193 ), array( 1195 ), array( 1197 ), array( 1199 ), array( 1201 ), array( 1203 ), array( 1205 ), array( 1207 ), array( 1209 ), array( 1211 ), array( 1213 ), array( 1215 ), array( 1218 ), array( 1220 ), array( 1222 ), array( 1224 ), array( 1226 ), array( 1228 ), array( 1230 ), array( 1233 ), array( 1235 ), array( 1237 ), array( 1239 ), array( 1241 ), array( 1243 ), array( 1245 ), array( 1247 ), array( 1249 ), array( 1251 ), array( 1253 ), array( 1255 ), array( 1257 ), array( 1259 ), array( 1261 ), array( 1263 ), array( 1265 ), array( 1267 ), array( 1269 ), array( 1273 ), array( 1281 ), array( 1283 ), array( 1285 ), array( 1287 ), array( 1289 ), array( 1291 ), array( 1293 ), array( 1295 ), array( 1377 ), array( 1378 ), array( 1379 ), array( 1380 ), array( 1381 ), array( 1382 ), array( 1383 ), array( 1384 ), array( 1385 ), array( 1386 ), array( 1387 ), array( 1388 ), array( 1389 ), array( 1390 ), array( 1391 ), array( 1392 ), array( 1393 ), array( 1394 ), array( 1395 ), array( 1396 ), array( 1397 ), array( 1398 ), array( 1399 ), array( 1400 ), array( 1401 ), array( 1402 ), array( 1403 ), array( 1404 ), array( 1405 ), array( 1406 ), array( 1407 ), array( 1408 ), array( 1409 ), array( 1410 ), array( 1411 ), array( 1412 ), array( 1413 ), array( 1414 ), array( 1381, 1410 ), array( 3661, 3634 ), array( 7681 ), array( 7683 ), array( 7685 ), array( 7687 ), array( 7689 ), array( 7691 ), array( 7693 ), array( 7695 ), array( 7697 ), array( 7699 ), array( 7701 ), array( 7703 ), array( 7705 ), array( 7707 ), array( 7709 ), array( 7711 ), array( 7713 ), array( 7715 ), array( 7717 ), array( 7719 ), array( 7721 ), array( 7723 ), array( 7725 ), array( 7727 ), array( 7729 ), array( 7731 ), array( 7733 ), array( 7735 ), array( 7737 ), array( 7739 ), array( 7741 ), array( 7743 ), array( 7745 ), array( 7747 ), array( 7749 ), array( 7751 ), array( 7753 ), array( 7755 ), array( 7757 ), array( 7759 ), array( 7761 ), array( 7763 ), array( 7765 ), array( 7767 ), array( 7769 ), array( 7771 ), array( 7773 ), array( 7775 ), array( 7777 ), array( 7779 ), array( 7781 ), array( 7783 ), array( 7785 ), array( 7787 ), array( 7789 ), array( 7791 ), array( 7793 ), array( 7795 ), array( 7797 ), array( 7799 ), array( 7801 ), array( 7803 ), array( 7805 ), array( 7807 ), array( 7809 ), array( 7811 ), array( 7813 ), array( 7815 ), array( 7817 ), array( 7819 ), array( 7821 ), array( 7823 ), array( 7825 ), array( 7827 ), array( 7829 ), array( 104, 817 ), array( 116, 776 ), array( 119, 778 ), array( 121, 778 ), array( 97, 702 ), array( 7777 ), array( 7841 ), array( 7843 ), array( 7845 ), array( 7847 ), array( 7849 ), array( 7851 ), array( 7853 ), array( 7855 ), array( 7857 ), array( 7859 ), array( 7861 ), array( 7863 ), array( 7865 ), array( 7867 ), array( 7869 ), array( 7871 ), array( 7873 ), array( 7875 ), array( 7877 ), array( 7879 ), array( 7881 ), array( 7883 ), array( 7885 ), array( 7887 ), array( 7889 ), array( 7891 ), array( 7893 ), array( 7895 ), array( 7897 ), array( 7899 ), array( 7901 ), array( 7903 ), array( 7905 ), array( 7907 ), array( 7909 ), array( 7911 ), array( 7913 ), array( 7915 ), array( 7917 ), array( 7919 ), array( 7921 ), array( 7923 ), array( 7925 ), array( 7927 ), array( 7929 ), array( 7936 ), array( 7937 ), array( 7938 ), array( 7939 ), array( 7940 ), array( 7941 ), array( 7942 ), array( 7943 ), array( 7952 ), array( 7953 ), array( 7954 ), array( 7955 ), array( 7956 ), array( 7957 ), array( 7968 ), array( 7969 ), array( 7970 ), array( 7971 ), array( 7972 ), array( 7973 ), array( 7974 ), array( 7975 ), array( 7984 ), array( 7985 ), array( 7986 ), array( 7987 ), array( 7988 ), array( 7989 ), array( 7990 ), array( 7991 ), array( 8000 ), array( 8001 ), array( 8002 ), array( 8003 ), array( 8004 ), array( 8005 ), array( 965, 787 ), array( 965, 787, 768 ), array( 965, 787, 769 ), array( 965, 787, 834 ), array( 8017 ), array( 8019 ), array( 8021 ), array( 8023 ), array( 8032 ), array( 8033 ), array( 8034 ), array( 8035 ), array( 8036 ), array( 8037 ), array( 8038 ), array( 8039 ), array( 7936, 953 ), array( 7937, 953 ), array( 7938, 953 ), array( 7939, 953 ), array( 7940, 953 ), array( 7941, 953 ), array( 7942, 953 ), array( 7943, 953 ), array( 7936, 953 ), array( 7937, 953 ), array( 7938, 953 ), array( 7939, 953 ), array( 7940, 953 ), array( 7941, 953 ), array( 7942, 953 ), array( 7943, 953 ), array( 7968, 953 ), array( 7969, 953 ), array( 7970, 953 ), array( 7971, 953 ), array( 7972, 953 ), array( 7973, 953 ), array( 7974, 953 ), array( 7975, 953 ), array( 7968, 953 ), array( 7969, 953 ), array( 7970, 953 ), array( 7971, 953 ), array( 7972, 953 ), array( 7973, 953 ), array( 7974, 953 ), array( 7975, 953 ), array( 8032, 953 ), array( 8033, 953 ), array( 8034, 953 ), array( 8035, 953 ), array( 8036, 953 ), array( 8037, 953 ), array( 8038, 953 ), array( 8039, 953 ), array( 8032, 953 ), array( 8033, 953 ), array( 8034, 953 ), array( 8035, 953 ), array( 8036, 953 ), array( 8037, 953 ), array( 8038, 953 ), array( 8039, 953 ), array( 8048, 953 ), array( 945, 953 ), array( 940, 953 ), array( 945, 834 ), array( 945, 834, 953 ), array( 8112 ), array( 8113 ), array( 8048 ), array( 8049 ), array( 945, 953 ), array( 953 ), array( 8052, 953 ), array( 951, 953 ), array( 942, 953 ), array( 951, 834 ), array( 951, 834, 953 ), array( 8050 ), array( 8051 ), array( 8052 ), array( 8053 ), array( 951, 953 ), array( 953, 776, 768 ), array( 953, 776, 769 ), array( 953, 834 ), array( 953, 776, 834 ), array( 8144 ), array( 8145 ), array( 8054 ), array( 8055 ), array( 965, 776, 768 ), array( 965, 776, 769 ), array( 961, 787 ), array( 965, 834 ), array( 965, 776, 834 ), array( 8160 ), array( 8161 ), array( 8058 ), array( 8059 ), array( 8165 ), array( 8060, 953 ), array( 969, 953 ), array( 974, 953 ), array( 969, 834 ), array( 969, 834, 953 ), array( 8056 ), array( 8057 ), array( 8060 ), array( 8061 ), array( 969, 953 ), array( 114, 115 ), array( 99 ), array( 176, 99 ), array( 603 ), array( 176, 102 ), array( 104 ), array( 104 ), array( 104 ), array( 105 ), array( 105 ), array( 108 ), array( 110 ), array( 110, 111 ), array( 112 ), array( 113 ), array( 114 ), array( 114 ), array( 114 ), array( 115, 109 ), array( 116, 101, 108 ), array( 116, 109 ), array( 122 ), array( 969 ), array( 122 ), array( 107 ), array( 229 ), array( 98 ), array( 99 ), array( 101 ), array( 102 ), array( 109 ), array( 947 ), array( 960 ), array( 100 ), array( 8560 ), array( 8561 ), array( 8562 ), array( 8563 ), array( 8564 ), array( 8565 ), array( 8566 ), array( 8567 ), array( 8568 ), array( 8569 ), array( 8570 ), array( 8571 ), array( 8572 ), array( 8573 ), array( 8574 ), array( 8575 ), array( 9424 ), array( 9425 ), array( 9426 ), array( 9427 ), array( 9428 ), array( 9429 ), array( 9430 ), array( 9431 ), array( 9432 ), array( 9433 ), array( 9434 ), array( 9435 ), array( 9436 ), array( 9437 ), array( 9438 ), array( 9439 ), array( 9440 ), array( 9441 ), array( 9442 ), array( 9443 ), array( 9444 ), array( 9445 ), array( 9446 ), array( 9447 ), array( 9448 ), array( 9449 ), array( 104, 112, 97 ), array( 97, 117 ), array( 111, 118 ), array( 112, 97 ), array( 110, 97 ), array( 956, 97 ), array( 109, 97 ), array( 107, 97 ), array( 107, 98 ), array( 109, 98 ), array( 103, 98 ), array( 112, 102 ), array( 110, 102 ), array( 956, 102 ), array( 104, 122 ), array( 107, 104, 122 ), array( 109, 104, 122 ), array( 103, 104, 122 ), array( 116, 104, 122 ), array( 112, 97 ), array( 107, 112, 97 ), array( 109, 112, 97 ), array( 103, 112, 97 ), array( 112, 118 ), array( 110, 118 ), array( 956, 118 ), array( 109, 118 ), array( 107, 118 ), array( 109, 118 ), array( 112, 119 ), array( 110, 119 ), array( 956, 119 ), array( 109, 119 ), array( 107, 119 ), array( 109, 119 ), array( 107, 969 ), array( 109, 969 ), array( 98, 113 ), array( 99, 8725, 107, 103 ), array( 99, 111, 46 ), array( 100, 98 ), array( 103, 121 ), array( 104, 112 ), array( 107, 107 ), array( 107, 109 ), array( 112, 104 ), array( 112, 112, 109 ), array( 112, 114 ), array( 115, 118 ), array( 119, 98 ), array( 102, 102 ), array( 102, 105 ), array( 102, 108 ), array( 102, 102, 105 ), array( 102, 102, 108 ), array( 115, 116 ), array( 115, 116 ), array( 1396, 1398 ), array( 1396, 1381 ), array( 1396, 1387 ), array( 1406, 1398 ), array( 1396, 1389 ), array( 65345 ), array( 65346 ), array( 65347 ), array( 65348 ), array( 65349 ), array( 65350 ), array( 65351 ), array( 65352 ), array( 65353 ), array( 65354 ), array( 65355 ), array( 65356 ), array( 65357 ), array( 65358 ), array( 65359 ), array( 65360 ), array( 65361 ), array( 65362 ), array( 65363 ), array( 65364 ), array( 65365 ), array( 65366 ), array( 65367 ), array( 65368 ), array( 65369 ), array( 65370 ), array( 66600 ), array( 66601 ), array( 66602 ), array( 66603 ), array( 66604 ), array( 66605 ), array( 66606 ), array( 66607 ), array( 66608 ), array( 66609 ), array( 66610 ), array( 66611 ), array( 66612 ), array( 66613 ), array( 66614 ), array( 66615 ), array( 66616 ), array( 66617 ), array( 66618 ), array( 66619 ), array( 66620 ), array( 66621 ), array( 66622 ), array( 66623 ), array( 66624 ), array( 66625 ), array( 66626 ), array( 66627 ), array( 66628 ), array( 66629 ), array( 66630 ), array( 66631 ), array( 66632 ), array( 66633 ), array( 66634 ), array( 66635 ), array( 66636 ), array( 66637 ), array( 97 ), array( 98 ), array( 99 ), array( 100 ), array( 101 ), array( 102 ), array( 103 ), array( 104 ), array( 105 ), array( 106 ), array( 107 ), array( 108 ), array( 109 ), array( 110 ), array( 111 ), array( 112 ), array( 113 ), array( 114 ), array( 115 ), array( 116 ), array( 117 ), array( 118 ), array( 119 ), array( 120 ), array( 121 ), array( 122 ), array( 97 ), array( 98 ), array( 99 ), array( 100 ), array( 101 ), array( 102 ), array( 103 ), array( 104 ), array( 105 ), array( 106 ), array( 107 ), array( 108 ), array( 109 ), array( 110 ), array( 111 ), array( 112 ), array( 113 ), array( 114 ), array( 115 ), array( 116 ), array( 117 ), array( 118 ), array( 119 ), array( 120 ), array( 121 ), array( 122 ), array( 97 ), array( 98 ), array( 99 ), array( 100 ), array( 101 ), array( 102 ), array( 103 ), array( 104 ), array( 105 ), array( 106 ), array( 107 ), array( 108 ), array( 109 ), array( 110 ), array( 111 ), array( 112 ), array( 113 ), array( 114 ), array( 115 ), array( 116 ), array( 117 ), array( 118 ), array( 119 ), array( 120 ), array( 121 ), array( 122 ), array( 97 ), array( 99 ), array( 100 ), array( 103 ), array( 106 ), array( 107 ), array( 110 ), array( 111 ), array( 112 ), array( 113 ), array( 115 ), array( 116 ), array( 117 ), array( 118 ), array( 119 ), array( 120 ), array( 121 ), array( 122 ), array( 97 ), array( 98 ), array( 99 ), array( 100 ), array( 101 ), array( 102 ), array( 103 ), array( 104 ), array( 105 ), array( 106 ), array( 107 ), array( 108 ), array( 109 ), array( 110 ), array( 111 ), array( 112 ), array( 113 ), array( 114 ), array( 115 ), array( 116 ), array( 117 ), array( 118 ), array( 119 ), array( 120 ), array( 121 ), array( 122 ), array( 97 ), array( 98 ), array( 100 ), array( 101 ), array( 102 ), array( 103 ), array( 106 ), array( 107 ), array( 108 ), array( 109 ), array( 110 ), array( 111 ), array( 112 ), array( 113 ), array( 115 ), array( 116 ), array( 117 ), array( 118 ), array( 119 ), array( 120 ), array( 121 ), array( 97 ), array( 98 ), array( 100 ), array( 101 ), array( 102 ), array( 103 ), array( 105 ), array( 106 ), array( 107 ), array( 108 ), array( 109 ), array( 111 ), array( 115 ), array( 116 ), array( 117 ), array( 118 ), array( 119 ), array( 120 ), array( 121 ), array( 97 ), array( 98 ), array( 99 ), array( 100 ), array( 101 ), array( 102 ), array( 103 ), array( 104 ), array( 105 ), array( 106 ), array( 107 ), array( 108 ), array( 109 ), array( 110 ), array( 111 ), array( 112 ), array( 113 ), array( 114 ), array( 115 ), array( 116 ), array( 117 ), array( 118 ), array( 119 ), array( 120 ), array( 121 ), array( 122 ), array( 97 ), array( 98 ), array( 99 ), array( 100 ), array( 101 ), array( 102 ), array( 103 ), array( 104 ), array( 105 ), array( 106 ), array( 107 ), array( 108 ), array( 109 ), array( 110 ), array( 111 ), array( 112 ), array( 113 ), array( 114 ), array( 115 ), array( 116 ), array( 117 ), array( 118 ), array( 119 ), array( 120 ), array( 121 ), array( 122 ), array( 97 ), array( 98 ), array( 99 ), array( 100 ), array( 101 ), array( 102 ), array( 103 ), array( 104 ), array( 105 ), array( 106 ), array( 107 ), array( 108 ), array( 109 ), array( 110 ), array( 111 ), array( 112 ), array( 113 ), array( 114 ), array( 115 ), array( 116 ), array( 117 ), array( 118 ), array( 119 ), array( 120 ), array( 121 ), array( 122 ), array( 97 ), array( 98 ), array( 99 ), array( 100 ), array( 101 ), array( 102 ), array( 103 ), array( 104 ), array( 105 ), array( 106 ), array( 107 ), array( 108 ), array( 109 ), array( 110 ), array( 111 ), array( 112 ), array( 113 ), array( 114 ), array( 115 ), array( 116 ), array( 117 ), array( 118 ), array( 119 ), array( 120 ), array( 121 ), array( 122 ), array( 97 ), array( 98 ), array( 99 ), array( 100 ), array( 101 ), array( 102 ), array( 103 ), array( 104 ), array( 105 ), array( 106 ), array( 107 ), array( 108 ), array( 109 ), array( 110 ), array( 111 ), array( 112 ), array( 113 ), array( 114 ), array( 115 ), array( 116 ), array( 117 ), array( 118 ), array( 119 ), array( 120 ), array( 121 ), array( 122 ), array( 97 ), array( 98 ), array( 99 ), array( 100 ), array( 101 ), array( 102 ), array( 103 ), array( 104 ), array( 105 ), array( 106 ), array( 107 ), array( 108 ), array( 109 ), array( 110 ), array( 111 ), array( 112 ), array( 113 ), array( 114 ), array( 115 ), array( 116 ), array( 117 ), array( 118 ), array( 119 ), array( 120 ), array( 121 ), array( 122 ), array( 945 ), array( 946 ), array( 947 ), array( 948 ), array( 949 ), array( 950 ), array( 951 ), array( 952 ), array( 953 ), array( 954 ), array( 955 ), array( 956 ), array( 957 ), array( 958 ), array( 959 ), array( 960 ), array( 961 ), array( 952 ), array( 963 ), array( 964 ), array( 965 ), array( 966 ), array( 967 ), array( 968 ), array( 969 ), array( 963 ), array( 945 ), array( 946 ), array( 947 ), array( 948 ), array( 949 ), array( 950 ), array( 951 ), array( 952 ), array( 953 ), array( 954 ), array( 955 ), array( 956 ), array( 957 ), array( 958 ), array( 959 ), array( 960 ), array( 961 ), array( 952 ), array( 963 ), array( 964 ), array( 965 ), array( 966 ), array( 967 ), array( 968 ), array( 969 ), array( 963 ), array( 945 ), array( 946 ), array( 947 ), array( 948 ), array( 949 ), array( 950 ), array( 951 ), array( 952 ), array( 953 ), array( 954 ), array( 955 ), array( 956 ), array( 957 ), array( 958 ), array( 959 ), array( 960 ), array( 961 ), array( 952 ), array( 963 ), array( 964 ), array( 965 ), array( 966 ), array( 967 ), array( 968 ), array( 969 ), array( 963 ), array( 945 ), array( 946 ), array( 947 ), array( 948 ), array( 949 ), array( 950 ), array( 951 ), array( 952 ), array( 953 ), array( 954 ), array( 955 ), array( 956 ), array( 957 ), array( 958 ), array( 959 ), array( 960 ), array( 961 ), array( 952 ), array( 963 ), array( 964 ), array( 965 ), array( 966 ), array( 967 ), array( 968 ), array( 969 ), array( 963 ), array( 945 ), array( 946 ), array( 947 ), array( 948 ), array( 949 ), array( 950 ), array( 951 ), array( 952 ), array( 953 ), array( 954 ), array( 955 ), array( 956 ), array( 957 ), array( 958 ), array( 959 ), array( 960 ), array( 961 ), array( 952 ), array( 963 ), array( 964 ), array( 965 ), array( 966 ), array( 967 ), array( 968 ), array( 969 ), array( 963 ), array( 963 ), array( 97 ), array( 230 ), array( 98 ), array( 100 ), array( 101 ), array( 477 ), array( 103 ), array( 104 ), array( 105 ), array( 106 ), array( 107 ), array( 108 ), array( 109 ), array( 110 ), array( 111 ), array( 547 ), array( 112 ), array( 114 ), array( 116 ), array( 117 ), array( 119 ), array( 102, 97, 120 ), array( 112, 116, 101 ), array( 104, 103 ), array( 101, 118 ), array( 108, 116, 100 ), array( 105, 117 ), array( 118, 8725, 109 ), array( 97, 8725, 109 ) ), 'norm_combcls' => array( 1, 1, 1, 1, 1, 7, 7, 7, 7, 7, 7, 7, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 84, 91, 103, 103, 107, 107, 107, 107, 118, 118, 122, 122, 122, 122, 129, 130, 130, 130, 130, 130, 130, 132, 202, 202, 202, 202, 216, 216, 216, 216, 216, 216, 216, 216, 216, 218, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 222, 222, 222, 222, 224, 224, 226, 228, 228, 228, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 232, 232, 232, 233, 233, 234, 234, 234, 234, 240 ) );
- public function __construct( $options = false )
- {
- $this->slast = $this->_sbase + $this->_lcount * $this->_vcount * $this->_tcount;
- if ( is_array( $options ) )
- {
- return $this->set_parameter( $options );
- }
- return true;
- }
- public function set_parameter( $option, $value = false )
- {
- if ( !is_array( $option ) )
- {
- $option = array( $option => $value );
- }
- foreach ( $option as $k => $v )
- {
- switch ( $k )
- {
- case "encoding" :
- switch ( $v )
- {
- case "utf8" :
- case "ucs4_string" :
- case "ucs4_array" :
- $this->_api_encoding = $Var_576;
- break;
- $this->_error( "Set Parameter: Unknown parameter ".$v." for option ".$k );
- return false;
- }
- break;
- case "overlong" :
- $this->_allow_overlong = $v ? true : false;
- break;
- case "strict" :
- $this->_strict_mode = $v ? true : false;
- break;
- }
- $this->_error( "Set Parameter: Unknown option ".$k );
- return false;
- }
- return true;
- }
- public function decode( $input, $one_time_encoding = false )
- {
- if ( $one_time_encoding )
- {
- switch ( $one_time_encoding )
- {
- case "utf8" :
- break;
- case "ucs4_string" :
- break;
- case "ucs4_array" :
- }
- break;
- $this->_error( "Unknown encoding ".$one_time_encoding );
- return false;
- }
- $input = trim( $input );
- if ( strpos( $input, "@" ) )
- {
- if ( $this->_strict_mode )
- {
- $this->_error( "Only simple domain name parts can be handled in strict mode" );
- return false;
- }
- $input = explode( "@", $input, 2 )[1];
- $email_pref = explode( "@", $input, 2 )[0];
- $arr = explode( ".", $input );
- foreach ( $arr as $k => $v )
- {
- if ( preg_match( "!^".preg_quote( $this->_punycode_prefix, "!" )."!", $v ) )
- {
- $conv = $this->_decode( $v );
- if ( $conv )
- {
- $arr[$k] = $conv;
- }
- }
- }
- $input = join( ".", $arr );
- $arr = explode( ".", $email_pref );
- foreach ( $arr as $k => $v )
- {
- if ( preg_match( "!^".preg_quote( $this->_punycode_prefix, "!" )."!", $v ) )
- {
- $conv = $this->_decode( $v );
- if ( $conv )
- {
- $arr[$k] = $conv;
- }
- }
- }
- $email_pref = join( ".", $arr );
- $return = $email_pref."@".$input;
- }
- else if ( preg_match( "![:\\./]!", $input ) )
- {
- if ( $this->_strict_mode )
- {
- $this->_error( "Only simple domain name parts can be handled in strict mode" );
- return false;
- }
- $parsed = parse_url( $input );
- if ( isset( $parsed['host'] ) )
- {
- $arr = explode( ".", $parsed['host'] );
- foreach ( $arr as $k => $v )
- {
- $conv = $this->_decode( $v );
- if ( $conv )
- {
- $arr[$k] = $conv;
- }
- }
- $parsed['host'] = join( ".", $arr );
- $return = ( empty( $parsed['scheme'] ) ? "" : $parsed['scheme'].( strtolower( $parsed['scheme'] ) == "mailto" ? ":" : "://" ) ).( empty( $parsed['user'] ) ? "" : $parsed['user'].( empty( $parsed['pass'] ) ? "" : ":".$parsed['pass'] )."@" ).$parsed['host'].( empty( $parsed['port'] ) ? "" : ":".$parsed['port'] ).( empty( $parsed['path'] ) ? "" : $parsed['path'] ).( empty( $parsed['query'] ) ? "" : "?".$parsed['query'] ).( empty( $parsed['fragment'] ) ? "" : "#".$parsed['fragment'] );
- }
- else
- {
- $arr = explode( ".", $input );
- foreach ( $arr as $k => $v )
- {
- $conv = $this->_decode( $v );
- $arr[$k] = $conv ? $conv : $v;
- }
- $return = join( ".", $arr );
- }
- }
- else
- {
- $return = $this->_decode( $input );
- if ( !$return )
- {
- $return = $input;
- }
- }
- switch ( $one_time_encoding ? $one_time_encoding : $this->_api_encoding )
- {
- case "utf8" :
- return $return;
- case "ucs4_string" :
- return $this->_ucs4_to_ucs4_string( $this->_utf8_to_ucs4( $return ) );
- case "ucs4_array" :
- return $this->_utf8_to_ucs4( $return );
- }
- $this->_error( "Unsupported output format" );
- return false;
- }
- public function encode( $decoded, $one_time_encoding = false )
- {
- switch ( $one_time_encoding ? $one_time_encoding : $this->_api_encoding )
- {
- case "utf8" :
- $decoded = $this->_utf8_to_ucs4( $decoded );
- break;
- case "ucs4_string" :
- $decoded = $this->_ucs4_string_to_ucs4( $decoded );
- break;
- case "ucs4_array" :
- }
- break;
- $this->_error( "Unsupported input format: ".( $one_time_encoding ? $one_time_encoding : $this->_api_encoding ) );
- return false;
- if ( empty( $decoded ) )
- {
- return "";
- }
- $last_begin = 0;
- $output = "";
- foreach ( $decoded as $k => $v )
- {
- switch ( $v )
- {
- case 12290 :
- case 65294 :
- case 65377 :
- $decoded[$k] = 46;
- break;
- case 46 :
- break;
- case 47 :
- break;
- case 58 :
- break;
- case 63 :
- break;
- case 64 :
- }
- if ( $this->_strict_mode )
- {
- $this->_error( "Neither email addresses nor URLs are allowed in strict mode." );
- return false;
- }
- if ( $k )
- {
- $encoded = "";
- $encoded = $this->_encode( array_slice( $decoded, $last_begin, $k - $last_begin ) );
- if ( $encoded )
- {
- $output .= $encoded;
- }
- else
- {
- $output .= $this->_ucs4_to_utf8( array_slice( $decoded, $last_begin, $k - $last_begin ) );
- }
- $output .= chr( $decoded[$k] );
- }
- $last_begin = $k + 1;
- }
- if ( $last_begin )
- {
- $inp_len = sizeof( $decoded );
- $encoded = "";
- $encoded = $this->_encode( array_slice( $decoded, $last_begin, $inp_len - $last_begin ) );
- if ( $encoded )
- {
- $output .= $encoded;
- }
- else
- {
- $output .= $this->_ucs4_to_utf8( array_slice( $decoded, $last_begin, $inp_len - $last_begin ) );
- }
- return $output;
- }
- if ( $output = $this->_encode( $decoded ) )
- {
- return $output;
- }
- return $this->_ucs4_to_utf8( $decoded );
- }
- public function get_last_error( )
- {
- return $this->_error;
- }
- private function _decode( $encoded )
- {
- $decoded = array( );
- if ( !preg_match( "!^".preg_quote( $this->_punycode_prefix, "!" )."!", $encoded ) )
- {
- $this->_error( "This is not a punycode string" );
- return false;
- }
- $encode_test = preg_replace( "!^".preg_quote( $this->_punycode_prefix, "!" )."!", "", $encoded );
- if ( !$encode_test )
- {
- $this->_error( "The given encoded string was empty" );
- return false;
- }
- $delim_pos = strrpos( $encoded, "-" );
- if ( strlen( $this->_punycode_prefix ) < $delim_pos )
- {
- $k = strlen( $this->_punycode_prefix );
- while ( $k < $delim_pos )
- {
- $decoded[] = ord( $encoded[$k] );
- ++$k;
- }
- }
- $deco_len = count( $decoded );
- $enco_len = strlen( $encoded );
- $is_first = true;
- $bias = $this->_initial_bias;
- $idx = 0;
- $char = $this->_initial_n;
- $enco_idx = $delim_pos ? $delim_pos + 1 : 0;
- while ( $enco_idx < $enco_len )
- {
- $old_idx = $idx;
- $w = 1;
- $k = $this->_base;
- while ( 1 )
- {
- $digit = $this->_decode_digit( $encoded[$enco_idx++] );
- $idx += $digit * $w;
- $t = $k <= $bias ? $this->_tmin : $bias + $this->_tmax <= $k ? $this->_tmax : $k - $bias;
- if ( $digit < $t )
- {
- break;
- }
- $w = ( integer )( $w * ( $this->_base - $t ) );
- $k += $this->_base;
- }
- $bias = $this->_adapt( $idx - $old_idx, $deco_len + 1, $is_first );
- $is_first = false;
- $char += ( integer )( $idx / ( $deco_len + 1 ) );
- $idx %= $deco_len + 1;
- if ( 0 < $deco_len )
- {
- $i = $deco_len;
- while ( $idx < $i )
- {
- $decoded[$i] = $decoded[$i - 1];
- --$i;
- }
- }
- $decoded[$idx++] = $char;
- ++$deco_len;
- }
- return $this->_ucs4_to_utf8( $decoded );
- }
- private function _encode( $decoded )
- {
- $extract = strlen( $this->_punycode_prefix );
- $check_pref = $this->_utf8_to_ucs4( $this->_punycode_prefix );
- $check_deco = array_slice( $decoded, 0, $extract );
- if ( $check_pref == $check_deco )
- {
- $this->_error( "This is already a punycode string" );
- return false;
- }
- $encodable = false;
- foreach ( $decoded as $k => $v )
- {
- if ( 122 < $v )
- {
- $encodable = true;
- break;
- break;
- }
- }
- if ( !$encodable )
- {
- $this->_error( "The given string does not contain encodable chars" );
- return false;
- }
- $decoded = $this->_nameprep( $decoded );
- if ( !$decoded || !is_array( $decoded ) )
- {
- return false;
- }
- $deco_len = count( $decoded );
- if ( !$deco_len )
- {
- return false;
- }
- $codecount = 0;
- $encoded = "";
- $i = 0;
- while ( $i < $deco_len )
- {
- $test = $decoded[$i];
- if ( 47 < $test && $test < 64 || 64 < $test && $test < 91 || 96 < $test && $test <= 123 || 45 == $test )
- {
- $encoded .= chr( $decoded[$i] );
- ++$codecount;
- }
- ++$i;
- }
- if ( $codecount == $deco_len )
- {
- return $encoded;
- }
- $encoded = $this->_punycode_prefix.$encoded;
- if ( $codecount )
- {
- $encoded .= "-";
- }
- $is_first = true;
- $cur_code = $this->_initial_n;
- $bias = $this->_initial_bias;
- $delta = 0;
- while ( $codecount < $deco_len )
- {
- $i = 0;
- $next_code = $this->_max_ucs;
- while ( $i < $deco_len )
- {
- if ( $cur_code <= $decoded[$i] && $decoded[$i] <= $next_code )
- {
- $next_code = $decoded[$i];
- }
- ++$i;
- }
- $delta += ( $next_code - $cur_code ) * ( $codecount + 1 );
- $cur_code = $next_code;
- $i = 0;
- do
- {
- if ( $decoded[$i] < $cur_code )
- {
- ++$delta;
- }
- if ( $decoded[$i] == $cur_code )
- {
- $q = $delta;
- $k = $this->_base;
- while ( 1 )
- {
- $t = $k <= $bias ? $this->_tmin : $bias + $this->_tmax <= $k ? $this->_tmax : $k - $bias;
- if ( $q < $t )
- {
- break;
- }
- $encoded .= $this->_encode_digit( intval( $t + ( $q - $t ) % ( $this->_base - $t ) ) );
- $q = ( integer )( ( $q - $t ) / ( $this->_base - $t ) );
- $k += $this->_base;
- }
- $encoded .= $this->_encode_digit( $q );
- $bias = $this->_adapt( $delta, $codecount + 1, $is_first );
- ++$codecount;
- $delta = 0;
- $is_first = false;
- }
- ++$i;
- } while ( 1 );
- ++$delta;
- ++$cur_code;
- }
- return $encoded;
- }
- private function _adapt( $delta, $npoints, $is_first )
- {
- $delta = intval( $is_first ? $delta / $this->_damp : $delta / 2 );
- $delta += intval( $delta / $npoints );
- $k = 0;
- while ( ( $this->_base - $this->_tmin ) * $this->_tmax / 2 < $delta )
- {
- $delta = intval( $delta / ( $this->_base - $this->_tmin ) );
- $k += $this->_base;
- }
- return intval( $k + ( $this->_base - $this->_tmin + 1 ) * $delta / ( $delta + $this->_skew ) );
- }
- private function _encode_digit( $d )
- {
- return chr( $d + 22 + 75 * ( $d < 26 ) );
- }
- private function _decode_digit( $cp )
- {
- $cp = ord( $cp );
- return $cp - 48 < 10 ? $cp - 22 : $cp - 65 < 26 ? $cp - 65 : $cp - 97 < 26 ? $cp - 97 : $this->_base;
- }
- private function _error( $error = "" )
- {
- $this->_error = $error;
- }
- private function _nameprep( $input )
- {
- $output = array( );
- $error = false;
- foreach ( $input as $v )
- {
- if ( in_array( $v, $this->NP['map_nothing'] ) )
- {
- continue;
- }
- if ( in_array( $v, $this->NP['prohibit'] ) || in_array( $v, $this->NP['general_prohibited'] ) )
- {
- $this->_error( "NAMEPREP: Prohibited input U+".sprintf( "%08X", $v ) );
- return false;
- }
- foreach ( $this->NP['prohibit_ranges'] as $range )
- {
- if ( $range[0] <= $v && $v <= $range[1] )
- {
- $this->_error( "NAMEPREP: Prohibited input U+".sprintf( "%08X", $v ) );
- return false;
- }
- }
- if ( 44032 <= $v && $v <= 55215 )
- {
- foreach ( $this->_hangul_decompose( $v ) as $out )
- {
- $output[] = ( integer );
- }
- }
- else if ( isset( $this->NP['replacemaps'][$v] ) )
- {
- foreach ( $this->_apply_cannonical_ordering( $this->NP['replacemaps'][$v] ) as $out )
- {
- $output[] = ( integer );
- }
- }
- else
- {
- $output[] = ( integer );
- }
- }
- $output = $this->_hangul_compose( $output );
- $last_class = 0;
- $last_starter = 0;
- $out_len = count( $output );
- $i = 0;
- while ( $i < $out_len )
- {
- $class = $this->_get_combining_class( $output[$i] );
- if ( ( !$last_class || $class < $last_class ) && $class )
- {
- $seq_len = $i - $last_starter;
- $out = $this->_combine( array_slice( $output, $last_starter, $seq_len ) );
- if ( $out )
- {
- $output[$last_starter] = $out;
- if ( count( $out ) != $seq_len )
- {
- $j = $i + 1;
- while ( $j < $out_len )
- {
- $output[$j - 1] = $output[$j];
- ++$j;
- }
- unset( $output[$out_len] );
- }
- --$i;
- --$out_len;
- $last_class = $i == $last_starter ? 0 : $this->_get_combining_class( $output[$i - 1] );
- continue;
- }
- }
- if ( !$class )
- {
- $last_starter = $i;
- }
- $last_class = $class;
- ++$i;
- }
- return $output;
- }
- private function _hangul_decompose( $char )
- {
- $sindex = ( integer ) - $this->_sbase;
- if ( $sindex < 0 || $this->_scount <= $sindex )
- {
- return array( $char );
- }
- $result = array( );
- $result[] = ( integer ) + $sindex / $this->_ncount;
- $result[] = ( integer ) + $sindex % $this->_ncount / $this->_tcount;
- $T = intval( $this->_tbase + $sindex % $this->_tcount );
- if ( $T != $this->_tbase )
- {
- $result[] = $T;
- }
- return $result;
- }
- private function _hangul_compose( $input )
- {
- $inp_len = count( $input );
- if ( !$inp_len )
- {
- return array( );
- }
- $result = array( );
- $last = ( integer );
- $result[] = $last;
- $i = 1;
- while ( $i < $inp_len )
- {
- $char = ( integer );
- $sindex = $last - $this->_sbase;
- $lindex = $last - $this->_lbase;
- $vindex = $char - $this->_vbase;
- $tindex = $char - $this->_tbase;
- if ( 0 <= $sindex && $sindex < $this->_scount && $sindex % $this->_tcount == 0 && 0 <= $tindex && $tindex <= $this->_tcount )
- {
- $last += $tindex;
- $result[count( $result ) - 1] = $last;
- continue;
- }
- if ( $lindex < $this->_lcount && 0 <= $vindex && $vindex < $this->_vcount )
- {
- $last = ( integer ) + ( $lindex * $this->_vcount + $vindex ) * $this->_tcount;
- $result[count( $result ) - 1] = $last;
- continue;
- }
- $last = $char;
- $result[] = $char;
- ++$i;
- }
- return $result;
- }
- private function _get_combining_class( $char )
- {
- return isset( $this->NP['norm_combcls'][$char] ) ? $this->NP['norm_combcls'][$char] : 0;
- }
- private function _apply_cannonical_ordering( $input )
- {
- $swap = true;
- $size = count( $input );
- while ( $swap )
- {
- $swap = false;
- $last = $this->_get_combining_class( intval( $input[0] ) );
- $i = 0;
- do
- {
- if ( $i < $size - 1 )
- {
- $next = $this->_get_combining_class( intval( $input[$i + 1] ) );
- if ( $next != 0 && $next < $last )
- {
- $j = $i + 1;
- while ( 0 < $j )
- {
- if ( $this->_get_combining_class( intval( $input[$j - 1] ) ) <= $next )
- {
- break;
- }
- $t = intval( $input[$j] );
- $input[$j] = intval( $input[$j - 1] );
- $input[$j - 1] = $t;
- $swap = true;
- --$j;
- }
- $next = $last;
- }
- $last = $next;
- ++$i;
- }
- } while ( 1 );
- }
- return $input;
- }
- private function _combine( $input )
- {
- $inp_len = count( $input );
- foreach ( $this->NP['replacemaps'] as $np_src => $np_target )
- {
- if ( $np_target[0] != $input[0] )
- {
- continue;
- }
- if ( count( $np_target ) != $inp_len )
- {
- continue;
- }
- $hit = false;
- foreach ( $input as $k2 => $v2 )
- {
- if ( $v2 == $np_target[$k2] )
- {
- $hit = true;
- }
- else
- {
- $hit = false;
- break;
- break;
- }
- }
- if ( $hit )
- {
- return $np_src;
- break;
- }
- }
- return false;
- }
- private function _utf8_to_ucs4( $input )
- {
- $output = array( );
- $out_len = 0;
- if ( function_exists( "mb_strlen" ) )
- {
- $inp_len = mb_strlen( $input, "8bit" );
- }
- else
- {
- $inp_len = strlen( $input );
- }
- $mode = "next";
- $test = "none";
- $k = 0;
- while ( $k < $inp_len )
- {
- $v = ord( $input[$k] );
- if ( $v < 128 )
- {
- $output[$out_len] = $v;
- ++$out_len;
- if ( "add" == $mode )
- {
- $this->_error( "Conversion from UTF-8 to UCS-4 failed: malformed input at byte ".$k );
- return false;
- }
- continue;
- }
- if ( "next" == $mode )
- {
- $start_byte = $v;
- $mode = "add";
- $test = "range";
- if ( $v >> 5 == 6 )
- {
- $next_byte = 0;
- $v = $v - 192 << 6;
- }
- else if ( $v >> 4 == 14 )
- {
- $next_byte = 1;
- $v = $v - 224 << 12;
- }
- else if ( $v >> 3 == 30 )
- {
- $next_byte = 2;
- $v = $v - 240 << 18;
- }
- else if ( $v >> 2 == 62 )
- {
- $next_byte = 3;
- $v = $v - 248 << 24;
- }
- else if ( $v >> 1 == 126 )
- {
- $next_byte = 4;
- $v = $v - 252 << 30;
- }
- else
- {
- $this->_error( "This might be UTF-8, but I don't understand it at byte ".$k );
- return false;
- }
- if ( "add" == $mode )
- {
- $output[$out_len] = ( integer );
- ++$out_len;
- continue;
- }
- }
- if ( "add" == $mode )
- {
- $test = "none";
- if ( $v < 160 && $start_byte == 224 || $v < 144 && $start_byte == 240 || 143 < $v && $start_byte == 244 )
- {
- $this->_error( "Bogus UTF-8 character detected (out of legal range) at byte ".$k );
- return false;
- }
- if ( $v >> 6 == 2 )
- {
- $v = $v - 128 << $next_byte * 6;
- $output += $out_len - 1;
- --$next_byte;
- }
- else
- {
- $this->_error( "Conversion from UTF-8 to UCS-4 failed: malformed input at byte ".$k );
- return false;
- }
- if ( $next_byte < 0 )
- {
- $mode = "next";
- }
- }
- ++$k;
- }
- return $output;
- }
- private function _ucs4_to_utf8( $input )
- {
- $output = "";
- foreach ( $input as $k => $v )
- {
- if ( $v < 128 )
- {
- $output .= chr( $v );
- }
- else if ( $v < 1 << 11 )
- {
- $output .= chr( 192 + ( $v >> 6 ) ).chr( 128 + ( $v & 63 ) );
- }
- else if ( $v < 1 << 16 )
- {
- $output .= chr( 224 + ( $v >> 12 ) ).chr( 128 + ( $v >> 6 & 63 ) ).chr( 128 + ( $v & 63 ) );
- }
- else if ( $v < 1 << 21 )
- {
- $output .= chr( 240 + ( $v >> 18 ) ).chr( 128 + ( $v >> 12 & 63 ) ).chr( 128 + ( $v >> 6 & 63 ) ).chr( 128 + ( $v & 63 ) );
- }
- else if ( self::$safe_mode )
- {
- $output .= self::$safe_char;
- }
- else
- {
- $this->_error( "Conversion from UCS-4 to UTF-8 failed: malformed input at byte ".$k );
- return false;
- break;
- }
- }
- return $output;
- }
- private function _ucs4_to_ucs4_string( $input )
- {
- $output = "";
- foreach ( $input as $v )
- {
- $output .= chr( $v >> 24 & 255 ).chr( $v >> 16 & 255 ).chr( $v >> 8 & 255 ).chr( $v & 255 );
- }
- return $output;
- }
- private function _ucs4_string_to_ucs4( $input )
- {
- $output = array( );
- $inp_len = strlen( $input );
- if ( $inp_len % 4 )
- {
- $this->_error( "Input UCS4 string is broken" );
- return false;
- }
- if ( !$inp_len )
- {
- return $output;
- }
- $i = 0;
- $out_len = 0 - 1;
- while ( $i < $inp_len )
- {
- if ( !( $i % 4 ) )
- {
- ++$out_len;
- $output[$out_len] = 0;
- }
- $output += $out_len;
- ++$i;
- }
- return $output;
- }
- }
- function lookupDomain( $sld, $ext )
- {
- global $remote_ip;
- $idnconv = new idnhandler( );
- $sld = $idnconv->encode( $sld );
- $whoisservers = file_get_contents( dirname( __FILE__ )."/whoisservers.php" );
- $whoisservers = explode( "\n", $whoisservers );
- foreach ( $whoisservers as $value )
- {
- $value = explode( "|", $value );
- $tld = trim( strip_tags( $value[0] ) );
- $whoisserver[$tld] = trim( strip_tags( $value[1] ) );
- $whoisvalue[$tld] = trim( strip_tags( $value[2] ) );
- $whoisreqprefix[$tld] = strip_tags( $value[3] );
- }
- $port = "43";
- $server = $whoisserver[$ext];
- $return = $whoisvalue[$ext];
- $reqprefix = $whoisreqprefix[$ext];
- if ( $server == "" )
- {
- $result['result'] = "available";
- }
- else
- {
- $fulldomain = $domain = $sld.$ext;
- if ( substr( $return, 0, 12 ) == "HTTPREQUEST-" )
- {
- $ch = curl_init( );
- $url = $server.$domain;
- curl_setopt( $ch, CURLOPT_URL, $url );
- curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, 0 );
- curl_setopt( $ch, CURLOPT_TIMEOUT, 60 );
- curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
- curl_setopt( $ch, CURLOPT_SSL_VERIFYHOST, 0 );
- curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, 0 );
- $data = curl_exec( $ch );
- curl_close( $ch );
- $data2 = " ---".$data;
- if ( strpos( $data2, substr( $return, 12 ) ) == true )
- {
- $result['result'] = "available";
- }
- else
- {
- $result['result'] = "unavailable";
- $result['whois'] = nl2br( strip_tags( $data ) );
- }
- }
- else
- {
- if ( strpos( $server, ":" ) )
- {
- $port = explode( ":", $server, 2 );
- $server = $port[0];
- $port = $port[1];
- }
- if ( substr( $return, 0, 6 ) == "NOTLD-" )
- {
- $domain = $sld;
- $return = substr( $return, 6 );
- }
- $fp = @fsockopen( @$server, @$port, @$errno, @$errstr, 10 );
- if ( $fp )
- {
- @fputs( @$fp, @$reqprefix.@$domain."\r\n" );
- @socket_set_timeout( @$fp, 10 );
- while ( @!feof( @$fp ) )
- {
- $data .= @fread( @$fp, 4096 );
- }
- @fclose( @$fp );
- $data2 = " ---".$data;
- if ( strpos( $data2, $return ) == true )
- {
- $result['result'] = "available";
- }
- else
- {
- $result['result'] = "unavailable";
- $result['whois'] = nl2br( $data );
- }
- }
- else
- {
- $result['result'] = "error";
- }
- }
- insert_query( "tblwhoislog", array( "date" => "now()", "domain" => $fulldomain, "ip" => $remote_ip ) );
- }
- return $result;
- }
- function getWHOISServers( )
- {
- $whoisservers = file_get_contents( dirname( __FILE__ )."/whoisservers.php" );
- $whoisservers = explode( "\n", $whoisservers );
- foreach ( $whoisservers as $value )
- {
- $value = explode( "|", $value );
- $whoisserver[trim( strip_tags( $value[0] ) )] = trim( strip_tags( $value[1] ) );
- }
- return $whoisserver;
- }
- function getWHOISServerVars( )
- {
- $whoisservers = file_get_contents( dirname( __FILE__ )."/whoisservers.php" );
- $whoisservers = explode( "\n", $whoisservers );
- foreach ( $whoisservers as $value )
- {
- $value = explode( "|", $value );
- $whoisvalue[trim( strip_tags( $value[0] ) )] = trim( strip_tags( $value[2] ) );
- }
- return $whoisvalue;
- }
- ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement