2012-02-13 4 views
0

Это моя фактическая функция:хоста с помощью preg_match

public function _validate_host($url) 
{ 
    $pattern = "/^([w]{2}([\w\-]+\.)?([\w]{2,5}))(:[\d]{1,5})?/"; 
    if (!preg_match($pattern, $url)) 
    { 
     return FALSE; 
    } 

    return TRUE; 
} 

Живая рабочая демонстрация: http://regexr.com?300ag

Фактическая модель делает выбор лишь URL, как:

www.my-url.com 

Я хочу его соответствуют URL-адресам хоста:

my-url.com - if found, match. 
my.server.com - if found, match. 
www.my-url.com - if found, match. 

http://www.my-url.com/ - if www.my-url.com found, match. 

Он также должен игнорировать (при проверке) http:// (если прилагается), а затем он должен заменить fe. следующий URL: http://www.my-url.com/ - www.my-url.com.

Любые решения будут оценены.

+0

'возвращают TRUE/false' в зависимости от' if' состояния? Шутки в сторону ? – hsz

+0

@hsz nah, thats просто scretch, что он должен соответствовать. – Cyclone

ответ

1

попробовать это один

^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/? 

или

[a-z\-\:\/\.]+ 

это подберет URL-адреса, даже если у них есть HTTP: //, однако вы можете использовать str_replace в PHP для удаления HTTP: // из результата.

+0

Ваш второй шаблон не работает нормально. Но первый из них хорош, но он недействителен в некоторых случаях, например: 'my-url.com /' - он не должен передавать такой url, потому что в конце есть косая черта '/', вы могли бы исправить это? – Cyclone

0

я работа это :)

function validate_url($domain) 
{  
    if(preg_match('|^http(s)?://[a-z0-9-]+(.[a-z0-9-]+)*(:[0-9]+)?(/.*)?$|i', $domain)) 
     return $domain; 
    else 
     return false;  
} 
Смежные вопросы