Reputation: 3502
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?
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
Upvotes: 3
Views: 12945
Reputation: 1
preg_match('@^([a-zA-Z0-9]*\.)?([a-zA-Z0-9]+)\.([a-zA-Z]{2,4})$@',$_SERVER["HTTP_HOST"], $matches);
Upvotes: 0
Reputation: 120634
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 />";
?>
Upvotes: 4
Reputation: 1380
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);
Upvotes: 3
Reputation: 124257
If you want to use preg_replace(), then:
preg_replace('/\..*/', '', $_SERVER['SERVER_NAME'])
Upvotes: 0