php regex имеет ли доменную строку www и домен верхнего уровня - PullRequest
1 голос
/ 04 января 2011

Я не любитель, когда дело доходит до регулярных выражений, но учтите, что у меня есть следующие три домена

www.google.com
www.google.co.uk
google.com

Я хотел бы создать некоторое регулярное выражение, которое будет проверять, есть ли у домена www, а также .co.uk или .com

Кто-нибудь знает какое-нибудь регулярное выражение, которое будет проверять это?

Ответы [ 4 ]

3 голосов
/ 04 января 2011

Для этого вам не нужно регулярное выражение, вы можете использовать strpos, который, как говорят, работает быстрее, чем регулярное выражение.

if ( strpos('www.', $mystring) !== false ) {
    //www was found in the string
} else {
    //www was not foun in the string
}

Если вы действительно хотите быть медленнее и использовать регулярные выражения, вы можете проверить все из них, как это

preg_match('/www|\.com|\.co\.uk/', $mystring);

Если, например, вы хотите применить другую логику для www, чем для .com, вы можете использовать

preg_match('/www/', $string);
preg_match('/\.com/', $string);
preg_match('/\.co\.uk/', $string);
1 голос
/ 04 января 2011

Насколько я понимаю из вашего вопроса, домен должен начинаться с www И заканчивается либо .co.uk ИЛИ .com. Итак, вот RegExp:

<?php
    $domains = array(
        "www.google.com",
        "www.google.co.uk",
        "google.com"
    );
    foreach($domains as $domain){
        echo sprintf(
            "%20s -> %d\n",
            $domain,
            preg_match("@^www\\..+(\\.co\\.uk|\\.com)$@", $domain)
        );
    }
?>
1 голос
/ 04 января 2011

Попробуйте это:

/^www.*(?:com|co\.uk)$/
0 голосов
/ 04 января 2011

Простой

$ar = array();
$t = array("www.google.com","www.google.co.uk","google.com","www.google");
foreach ($t as $str) {
    if (preg_match('/^www\.(.*)(\.co.uk|\.com)$/',$str)) {
        echo "Matches\n";
    }
}

Условный

$ar = array();
$t = array("www.google.com","www.google.co.uk","google.com","www.google");
foreach ($t as $str) {
    switch (true) {
        case preg_match('/^www\.(.*)$/',$str) :
        // code
        case preg_match('/^(.*)(\.co.uk)$/',$str) :
        // code
        case preg_match('/^(.*)(\.com)$/',$str) :
        // code
        break;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...