2013-03-06 3 views
2

Я хочу совместить домен (с preg_match), но хочу исключить субдомен.regex - исключить субдомен (preg_match)

Пример Я хочу, чтобы соответствовать все поддомены на example.org кроме boon.example.org:

Я попытался это:

$test = "boon.example.org"; 
$test2 = "null"; 
if(preg_match('#(?!boon)(\w+\.)?example\.org#', $test, $output)) { 
    $test2 = $output[2] .'example.org'; 
} 

Но выход test2 является: oon.example.org и не example.org

У кого-то есть ответ?

+0

Вам это нужно для «boon.example.org» или вообще? – VladL

+0

Как правило, boon.example.org - всего лишь пример. Это домен, который я хочу исключить. Все остальные поддомены (test.example.org, sub.example.org и т. Д.) Я хотел бы сопоставить. – user1480019

+0

- это не лучшее решение, чтобы заменить «благо». с "" ? – VladL

ответ

3

Если вы ищете только для этого точного подобласти, не могли бы вы просто проверить, если строка boon.example.org присутствует? Похоже, для этого слишком много избытка с регулярным выражением.

Несмотря на это, следующее регулярное выражение должно делать то, что вы хотите:

.*(?<!\bboon\.|^.)example.org 

вернуться бы subdomain.example.org для всех поддоменов, за исключением boon.example.org или любых поддоменов boon.example.org.

+0

Спасибо, но я хочу также сопоставить _test.example.org_, _sub.example.org_ и т. д. Теперь он возвращает example.org этими поддоменами , Смотрите: http://regexr.com?3419o – user1480019

+1

Я понял из вашего вопроса, что это то, что вы хотели (просто верхний домен). Я отредактирую свой ответ. – rvalvik

+0

Спасибо +1, это также соответствует 'boon.goodguy.example.org' :) – user1480019

0

Попробуйте:

echo '<pre>'; 
$test = "boon.example.org"; 
$test2 = "null"; 
preg_match('/^(?!boon\.)([\w]+\.)?example\.org$/', $test, $output); 
print_r($output); 

Это будет соответствовать всем суб-домен, кроме костру.

+1

Это не соответствует 'boon' в качестве субдомена поддомена, например. 'boon.goodguy.example.org' (если это имеет какое-либо значение) – rvalvik

0

Это регулярное выражение будет работает для вас:

^(((?!boon).)+\.)?example\.org$ 

RegExr link

+0

Спасибо, но я не хочу сопоставлять '.example.org' с регулярным выражением '(\ w + \.)? example \ .org 'он не соответствует пустым поддоменам: http://regexr.com?3418t – user1480019

Смежные вопросы