Algılama. Com /. Co.uk vs vs

2 Cevap php

Şu anda http:// ve www algılamak için bir preg_match var. vs .... ama ben bir dizeden domain.com veya domain.co.uk algılamak istiyorum

example string: "Hey hows it going, check out domain.com" And I want to detect domain.com

Ne istediğiniz herhangi bir büyük etki bu dizeyi oluşturmak algılamak yani. Com. Co.uk. Eu vs .. formdan example.com example2.co.uk ve sonra işlemek için doğru veya yanlış döndürür. Bu durumda domain.com bulur.

Ancak ben bunun gibi bir şey tespit etmek istemediğin:

"Hey.i bu siteyi seviyorum"

Sayede bu besbelli tam durağına bir boşluk yazarak bir hatadır!

Benim regex kadar kazımak gerekir Herhangi bir fikir!

Thanks, Stefan

2 Cevap

Onlar Latin olmayan adresler tanıttı sonra, bu tamamen çalışma filtre almak için regex kullanmak imkansız yakın olacaktır. Yani artık bunun için regex kullanmaya çalışıyorum değmez bile söyleyebilirim. Şüphe parse_url () henüz bunun için ya da desteği vardır, ama bunu kullanarak başkası her zaman bir bonus :) non-Latin URL'ler ile sorunları, çalışmak zorunda kalıyoruz Yani kullanmanızı

http://au.php.net/parse_url

http://thenextweb.com/me/2010/05/06/monumental-day-internet-nonlatin-domain-names-live/

Edit: Ok, from a string, split it into words like this


$array = explode(" ", $string);

for(int i = 0; i < count($array);i++)
{
  if(parse_url($array[i]) != false)
  {
    $url[] = $array[i];
  }
}

Tamam, parse_url () bu gibi kullanılabilir olması gerekiyordu, ama bildiğim kadarıyla gördüğünüz gibi url filtreleme yapmak php yerleşik başka hiçbir işlevi yoktur değildir.

İşte etki bölgelerinin bir listesini temin maç olur sıradanifade olduğunu:

[a-z0-9\-\.]+\.(com|co\.uk|net|org)