titel
titel

Reputation: 3502

Find out subdomain using Regular Expression in PHP

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

Answers (4)

robo
robo

Reputation: 1

preg_match('@^([a-zA-Z0-9]*\.)?([a-zA-Z0-9]+)\.([a-zA-Z]{2,4})$@',$_SERVER["HTTP_HOST"], $matches);

Upvotes: 0

Sean Bright
Sean Bright

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

sebnow
sebnow

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

chaos
chaos

Reputation: 124257

If you want to use preg_replace(), then:

preg_replace('/\..*/', '', $_SERVER['SERVER_NAME'])

Upvotes: 0

Related Questions