3v4l.org

run code in 300+ PHP versions simultaneously
<?php generate(); // FUNCTION function generate() { $digilist = "0123456789ABCDEFGHJKLMNPQRTUVWXY"; //now we generate a new random ID number using the substrings of the digitList string above $three_chars = NULL; $three_chars .= substr( $digilist, rand( 1, 9 ), 1 ); $three_chars .= substr( $digilist, rand( 10, 31 ), 1 ); $three_chars .= substr( $digilist, rand( 10, 31 ), 1 ); for( $i = 22; $i < 100; $i++) { $id = $three_chars . $i; $key = get_key( $id ); echo $id . ":" . $key . "\n"; } } function get_key( $id ) { $digilist = "0123456789ABCDEFGHJKLMNPQRTUVWXY"; //ok so now we need to generate an MD5 hash of our ID $hash = md5($id); //cycle through the hash 16 (length of key) times (in steps of 2 because each hex bytes is 2 digits long) $i = 0; $key = NULL; for ($i; $i < 32; $i+=2) { //here we convert the next hex value to an integer and perform a bitwise AND operation against '31' //31 is the highest substring value in our digit list. $nextdigit = hexdec(substr($hash, $i, 2)) & 31; //if 'i' is divisable by 8 (every 4 cycles) then we want to add "-" if ((($i % 8) == 0) && ($i > 0)) { $key .= "-".substr($digilist, $nextdigit, 1); } else { $key .= substr($digilist, $nextdigit, 1); } } return $key; }
based on VS4oA

Shows result from various feature-branches currently under review from the php developers. Contact me to have additional branches featured.

Output for branch master
2FE22:5G6W-222W-3G2Q-FCC0 2FE23:LCD8-X860-NP8R-6L7T 2FE24:FHN3-CUPV-EGLY-3377 2FE25:KJG8-2P2W-9T0Y-JCNP 2FE26:MBU2-0KL5-T75F-D3LB 2FE27:N5Y8-A9W2-2LBG-F486 2FE28:AJC9-KT9C-JE9U-L8WC 2FE29:X9KW-M3H0-EJ19-E7E9 2FE30:NX4L-0T1T-RBF9-U375 2FE31:1K26-BKT6-WFNJ-KE4E 2FE32:XFAD-14L7-ENUL-RLYC 2FE33:QUT7-4P7X-C1JQ-7Y7J 2FE34:JADC-FPBR-2XXN-7C7P 2FE35:ACPH-G0BG-V47G-M2EU 2FE36:C0R0-AEKP-L9DX-P4HY 2FE37:NBLL-DFNG-MTK6-PJL3 2FE38:9YJM-1EVH-8W96-U23T 2FE39:4NXF-R6GV-TE2L-R331 2FE40:YNBQ-EHQJ-3PB0-UYHQ 2FE41:0K3D-GAH8-V7CL-WPQH 2FE42:5992-3F7N-HG38-K83F 2FE43:HBTA-0UD7-D3GF-YYD5 2FE44:6L8K-D2UV-CNWD-GJFN 2FE45:L1W9-X0XK-7HVA-E0P8 2FE46:LNY4-HPU0-A2YC-HLDV 2FE47:A6W3-5B3N-WBAK-CP2N 2FE48:3V8J-KV9V-4XXM-RXVV 2FE49:LH2K-EQK3-UU6P-4JG2 2FE50:2JJX-5ECT-8AJF-2P91 2FE51:G6MP-6UGV-YH4W-6RE0 2FE52:UPEF-160L-NV0C-4YLG 2FE53:7XJD-7LKT-T89F-FERU 2FE54:4MHP-JDYY-CAUH-KEA3 2FE55:G6B6-TA69-TWFJ-BHJB 2FE56:4JNV-R6G1-V4C0-DRT0 2FE57:NRTW-NY1H-W1NY-BRY6 2FE58:PL2Y-NVUP-W8C6-A0LT 2FE59:20PE-50Y1-W58W-U6MK 2FE60:WL1R-4JCU-WNAM-X6LT 2FE61:B2DE-HMCQ-V1W6-B88V 2FE62:H30C-FYEP-04XN-6EET 2FE63:TQ54-2FY5-Y678-B5EH 2FE64:6R59-CULQ-KBTY-V2VN 2FE65:CJFH-MEX4-LU9R-ETYH 2FE66:MWF2-HBK2-W69B-YN06 2FE67:8YKU-3L4F-53D4-YEXC 2FE68:FH7C-7FJK-XA3F-KVQM 2FE69:QE1E-0XY8-1V9W-TVHP 2FE70:TANP-X3YU-1A47-D74X 2FE71:QHET-K4LM-K60P-KH3T 2FE72:GN4W-4CPN-7YFH-27UE 2FE73:A01V-70UU-P3Q9-BT63 2FE74:J9TR-KTQX-U7WC-DELK 2FE75:FH7G-2PU8-JY6J-LN4A 2FE76:T5YD-JF0E-VMXY-7QUH 2FE77:CYQU-FA1J-FCMK-Q7VQ 2FE78:GR3W-KGRL-9V9B-C9EM 2FE79:9PJJ-AGVJ-0X5R-TNX8 2FE80:BX9F-GGJ3-PNYR-6QP3 2FE81:W7ED-PQBX-3CFF-WFWC 2FE82:47DC-FJWC-HL8X-MFVG 2FE83:CW92-7GRJ-U1R2-UJC8 2FE84:NTWH-4G21-TFX9-EG8A 2FE85:WP9X-THMF-FUNM-K56G 2FE86:KW8D-0GG8-D4F3-4U2J 2FE87:X6RM-JJ0L-6JVM-0NC9 2FE88:5F1P-BCBQ-9EPH-39WM 2FE89:E0LR-UJ15-A72M-6CM6 2FE90:0VQF-KFH2-FE9K-0VKC 2FE91:XTWW-17GE-10F9-PP2X 2FE92:UH5W-9B4H-F76M-1G0E 2FE93:AH43-7N0N-32AR-0WQF 2FE94:TNE0-9DH7-JK2G-RB50 2FE95:4FLU-PRCR-47M4-AUJR 2FE96:VWMA-6KV2-QF3A-ND0T 2FE97:Y91A-VK4Y-NDUY-JMTV 2FE98:G2V1-BTEX-NCTB-V7WR 2FE99:EJX9-94BN-Y9UX-8KVE
Output for branch master_jit
5WD22:5JMM-9A89-J6UU-W8X8 5WD23:AU26-9YTV-KXE9-PKE0 5WD24:1HAQ-LAKL-YQH3-PRH1 5WD25:G2JE-JRG7-R8KP-XTHD 5WD26:20YB-3UY9-CQL1-AM7G 5WD27:CQQ2-NA1W-MY16-JDC1 5WD28:MKJA-XN50-RD6C-QY4F 5WD29:MQX3-7Q0Y-BML3-DRQ5 5WD30:VJF3-TQH7-DDQ8-7374 5WD31:WYWV-6EMP-LRDT-24HF 5WD32:NV46-YKE9-ETCT-WTEB 5WD33:63P3-07KU-4T3Q-70U0 5WD34:MP20-F573-PH6T-BP4C 5WD35:UDQA-D32H-NHA9-R1DW 5WD36:QMJC-1FG6-RELW-7V9W 5WD37:VKNR-1AGM-DQNK-DC1A 5WD38:86CE-1J7H-8BJL-KRL3 5WD39:KUP5-T4K2-JDX1-UVA5 5WD40:9AHG-DH7A-K95Y-PVUC 5WD41:QY95-B51P-5X86-X5LC 5WD42:WCGU-0YDP-CPY2-0VY6 5WD43:PVWP-3D50-BM0X-JNNY 5WD44:YVXF-HC0H-L8T1-YKWP 5WD45:VECE-FT1Y-FMGH-QG7L 5WD46:4L8E-QCL0-0EBM-HHDG 5WD47:9WY6-E54M-4HDL-4J47 5WD48:N7B9-PEKJ-319J-KYRW 5WD49:4N58-YVF3-7P7M-E3P2 5WD50:J7G6-K22F-FNMH-HKTH 5WD51:4ND2-QDNQ-JQ2R-5T9R 5WD52:3MYR-Y9D6-63W7-E6CJ 5WD53:E3MV-YALM-7AHB-FGE0 5WD54:MJ7F-JCX8-P3GA-EKCT 5WD55:MVPY-GPP5-AMCF-GJQV 5WD56:NP60-4FCW-TR7C-VMPK 5WD57:6JG8-2NHD-BR8L-1CYG 5WD58:NTAF-EW1X-G80J-TQRW 5WD59:XH30-DB8Q-4RR7-3PH4 5WD60:KBLT-VKK8-U7R2-7BPB 5WD61:RRJ5-WNJN-RB60-0MKW 5WD62:BAWY-DVLC-9TQC-QU24 5WD63:5JDY-G4WR-KL85-03WJ 5WD64:PNP9-7A4Q-JEAQ-HV7H 5WD65:JY9P-42LV-W99Y-15JL 5WD66:0L24-GDDH-VLHJ-67GJ 5WD67:0499-E42D-0FLC-2LG6 5WD68:D5UK-Q685-TBJQ-97WY 5WD69:725C-PHYC-ECGT-TBGM 5WD70:9P38-LVDA-N9NJ-A8XA 5WD71:YUJM-YPXK-RKQ3-C2R4 5WD72:Q2Q7-TCR7-89F9-DJPV 5WD73:MJAE-08EX-4FPA-65W9 5WD74:NPG6-8VB1-9LMK-UAD9 5WD75:X5HM-JKN9-6P4U-T9Q8 5WD76:T0N9-W6EH-AKV8-7NWJ 5WD77:QHRC-19VW-671U-NL5V 5WD78:BF3H-0R1A-UJHW-BN76 5WD79:KYP3-HYMF-TC4K-UBVP 5WD80:5HPM-LYLL-JF3P-7K0Y 5WD81:HLM4-NF0E-FWX0-YG40 5WD82:DYKM-LAP8-53L4-KVWV 5WD83:435L-PV1F-4M7N-NG9N 5WD84:UD6H-QT7Y-CKKF-MPPC 5WD85:6XYR-5RRU-QT7F-9FKD 5WD86:DB0D-LUCG-KGPA-3QBJ 5WD87:E6GN-AP2R-JHCG-6QVU 5WD88:M1QQ-DEUV-UT3V-DYW3 5WD89:V9UX-40YV-D90H-J75J 5WD90:GG3Y-3KBN-LTUH-PEH1 5WD91:BVWP-6AA4-0CP1-M1PN 5WD92:G0QH-XCDA-CA1L-JB69 5WD93:B5BN-3MPT-DHML-PGL2 5WD94:PBMQ-F2MU-B00U-7KHU 5WD95:WKAQ-PBEG-3VLG-AQA1 5WD96:PMH6-7L7U-395M-2AMF 5WD97:ME0R-NV1P-79U2-N2ER 5WD98:CXRQ-HU3Y-49D0-DUHN 5WD99:FC7D-CEA7-TUEM-DCGL

Archived branches

Once feature-branches are merged or declined, they are no longer available. Their functionality (when merged) can be viewed from the main output page