Czy wiesz, że jeśli przejdziesz na facebook.com i wprowadzisz adres URL w polu tekstowym aktualizacji statusu, zostanie on automatycznie wykryty, a Facebook wyświetli małą migawkę danych z tego adresu URL/linku? Facebook nie przejmuje się nawet wprowadzaniem adresu URL z lub bez protokołu takiego jak http://
.Jak działa algorytm dopasowywania adresów URL Facebooka?
Szukam replikacji tego zachowania. Obecnie mam to wyrażenie regularne:
((?:https?:\/\/)?)((?:[a-zA-Z0-9\-]+\.)+(?:com|org|net|gov|mil|biz|info|mobi|name|aero|jobs|museum|travel|[a-z]{2})(?:[a-z0-9\._\/~%\-\+&\#\?!=\(\)@]*)?(?:#?(?:[w]+)?)?)
Używam go do dopasowywania adresów URL wprowadzonych w obszarze tekstowym. Jednak ma fałszywe alarmy; będzie pasować do document.write(foo)
, co oczywiście nie jest adresem URL.
Facebook wydaje się nie mieć tego problemu. W rzeczywistości mogę wpisać "yahoo.com" w obszar tekstowy Facebooka, który rozpozna go jako adres URL. Ale jeśli napiszę "example.com", to go nie rozpozna. Oznacza to, że Facebook musi robić coś więcej niż tylko dopasowywanie wyrażenia regularnego. Czy nie mam racji co do tego?
Podsumowując, chcę wiedzieć, co robi Facebook, i chcę wiedzieć, w jaki sposób mogę go powielić. Wszelkie pomysły, wskazówki i rozwiązania są bardzo doceniane.
Dzięki za przeczytanie.
To pytanie wydaje się być nietypowe, ponieważ dotyczy szczegółów implementacji usługi internetowej o zamkniętym kodzie źródłowym. –