Find out subdomain using Regular Expression in PHP
Solution 1
preg_replace('/^(?:([^\.]+)\.)?domain\.com$/', '\1', $_SERVER['SERVER_NAME'])
Edit: What does the following output for you:
<?php
echo preg_replace('/^(?:([^\.]+)\.)?domain\.com$/', '\1', "sean.domain.com") . "<br />";
echo preg_replace('/^(?:([^\.]+)\.)?domain\.com$/', '\1', "titel.domain.com") . "<br />";
echo preg_replace('/^(?:([^\.]+)\.)?domain\.com$/', '\1', "domain.com") . "<br />";
?>
Solution 2
The following regex would capture any string before a full stop (the subdomain) and the rest of the domain:
^([^.]+)\..*$
I don't see the need for regex to do this though. It would be much easier to split by the full stop and get the first element:
list($subdomain, $rest) = explode('.', $_SERVER['SERVER_NAME'], 2);
Slavik Okara
I'm a 24 years old guy from Sibiu, Romania studying marketing and economics and interested in the area of web development. http://www.enhanced.ro
Updated on June 28, 2022Comments
-
Slavik Okara almost 2 years
Sorry if this is too little of a challenge to be suited as a stack overflow question, but I'm kind of new to Regular Expressions.
My question is, what is the regular expression that returns the string "token" for all the examples bellow?
- token.domain.com
- token.domain.com/
- token.domain.com/index.php
- token.domain.com/folder/index.php
- token.domain.com/folder/subfolder
- token.domain.com/folder/subfolder/index.php
- (added after edit)
- domain.com
- domain.com/
Im trying to use inside an preg_replace function in order to find out the subdomain of the current page from the $_SERVER['SERVER_NAME'] variable.
Thank you in advance, titel
Edit note: Sorry chaos and sebnow , I edited my question, what I initially meant, but forgot to write, was that this would work without any subdomain at all - case in which it would return an empty sting or NULL