3v4l.org

run code in 150+ php & hhvm versions
Bugs & Features
<?php $testArray = array( 'sub1.sub2.example.co.uk', 'sub1.example.com', 'example.com', 'sub1.sub2.sub3.example.co.uk', 'sub1.sub2.sub3.example.com', 'sub1.sub2.example.com' ); foreach($testArray as $k => $v) { echo $k." => ".extract_subdomains($v)."\n"; } function extract_domain($domain) { if(preg_match("/(?P<domain>[a-z0-9][a-z0-9\-]{1,63}\.[a-z\.]{2,6})$/i", $domain, $matches)) { return $matches['domain']; } else { return $domain; } } function extract_subdomains($domain) { $subdomains = $domain; $domain = extract_domain($subdomains); $subdomains = rtrim(strstr($subdomains, $domain, true), '.'); return $subdomains; }
Output for 5.3.0 - 5.6.28, hhvm-3.10.0 - 3.12.0, 7.0.0 - 7.1.0
0 => sub1.sub2 1 => sub1 2 => 3 => sub1.sub2.sub3 4 => sub1.sub2.sub3 5 => sub1.sub2
Output for 4.3.3 - 5.2.17
Warning: Wrong parameter count for strstr() in /in/oO89P on line 31 0 => Warning: Wrong parameter count for strstr() in /in/oO89P on line 31 1 => Warning: Wrong parameter count for strstr() in /in/oO89P on line 31 2 => Warning: Wrong parameter count for strstr() in /in/oO89P on line 31 3 => Warning: Wrong parameter count for strstr() in /in/oO89P on line 31 4 => Warning: Wrong parameter count for strstr() in /in/oO89P on line 31 5 =>
Output for 4.3.0 - 4.3.2
Notice: Undefined index: domain in /in/oO89P on line 20 Warning: Wrong parameter count for strstr() in /in/oO89P on line 31 0 => Notice: Undefined index: domain in /in/oO89P on line 20 Warning: Wrong parameter count for strstr() in /in/oO89P on line 31 1 => Notice: Undefined index: domain in /in/oO89P on line 20 Warning: Wrong parameter count for strstr() in /in/oO89P on line 31 2 => Notice: Undefined index: domain in /in/oO89P on line 20 Warning: Wrong parameter count for strstr() in /in/oO89P on line 31 3 => Notice: Undefined index: domain in /in/oO89P on line 20 Warning: Wrong parameter count for strstr() in /in/oO89P on line 31 4 => Notice: Undefined index: domain in /in/oO89P on line 20 Warning: Wrong parameter count for strstr() in /in/oO89P on line 31 5 =>