2011-12-09 9 views
8

Szukam sposobu sprawdzenia poprawności łącza, aby upewnić się, że wskazuje on na publiczną stronę profilu LinkedIn w PHP.Jak sprawdzić adres URL profilu publicznego LinkedIn

Mam stronę internetową i chciałbym, aby moi użytkownicy mogli udostępniać swój profil LinkedIn w swoim profilu na mojej stronie.

+0

Stworzyłem klasę na [url zatwierdzić LinkedIn] (https://github.com/gchokeen/linkedinURLValidator). – Gowri

Odpowiedz

4

Spróbuj czegoś takiego, gdzie $username jest połączoną nazwą użytkownika. Można również ustawić $ profileurl bezpośrednio do danego łącza i weryfikacji ze str_pos że jest zaczyna http://www.linkedin.com/in/

$profileurl = "http://www.linkedin.com/in/".$username; 

$fp = curl_init($profileurl); 
$response = curl_exec($fp); 
$response_code = curl_getinfo($fp, CURLINFO_HTTP_CODE); 
$validprofile = ($response_code == 200); 

$validprofile będzie logiczną wskazującą, czy profil jest prawidłowy.

+7

nie zapomnij o '/ in/username' jest tylko wtedy, gdy użytkownik wybrał niestandardowy adres URL. W przeciwnym razie wygląda bardziej jak '/ pub/fname-lname-etc/4/72/8a0' – codercake

0

Użyj wyrażenia regularnego, aby upewnić się, że link jest zgodny z formularzem powiązanym z profilami publicznymi.

5

Znalazłem kilka sposobów url profil może wyglądać następująco:

http://uk.linkedin.com/pub/some-name/1/1b3/b45/ 
http://nl.linkedin.com/pub/other-name/11/223/544 
http://www.linkedin.com/in/aname/ 
http://www.linkedin.com/in/another-name 
http://linkedin.com/in/name 
http://nl.linkedin.com/in/name 
http://nl.linkedin.com/in/name/ 

Użyłem tego wyrażenia regularnego, aby go opisać:

^https?://((www|\w\w)\.)?linkedin.com/((in/[^/]+/?)|(pub/[^/]+/((\w|\d)+/?){3}))$ 

To nie jest ścisłe, ale ścisłe to doprowadziło mnie do domu.

edit
- Dodano obsługę protokołu HTTPS

+0

Widzę formularz, który wygląda jak' https: //www.linkedin.com/profile/view? Id = 12345678' teraz. –

+0

to regex pracował dla mnie. –

2

To jest testowany wyrażenia regularnego, które używam na mojej stronie internetowej. Pasuję do wszystkich odmian, które obecnie istnieją.

var linkedin=/(https?)?:?(\/\/)?(([w]{3}||\w\w)\.)?linkedin.com(\w+:{0,1}\w*@)?(\S+)(:([0-9])+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/; 
+0

Jak możesz uczynić protokół http/https/ftp opcjonalnym w tym? co jeśli ktoś po prostu wejdzie na www.linkedin.com/their-profile-name, bez http. Poza tym to działa. –

+0

@NalinAgrawal Możesz użyć dowolnej kombinacji adresów URL, a otrzymasz właściwy wynik. Zmieniam kod bitowy, ale wzór jest taki sam. Jeśli rozumiesz wyrażenie regularne, możesz to zrobić z lub bez http, https i www –

3

mogę użyć innego wyrażenia regularnego więcej permisive:

^(http(s)?:\/\/)?([\w]+\.)?linkedin\.com\/(pub|in|profile)

obejmuje ona URL bez squeme i wszystkie próbki z innych odpowiedzi. można dokonać żadnych zmian tutaj http://regex101.com/r/vE8tV7

+0

To łamie dla adresów URL wyszukiwania takich jak http://www.linkedin.com/pub/dir/+/semnani/us-49-greater-los -angeles-area –

3

następujące wyrażenie pomoże Ci wszystkie wzory:

((https?:\/\/)?((www|\w\w)\.)?linkedin\.com\/)((([\w]{2,3})?)|([^\/]+\/(([\w|\d-&#?=])+\/?){1,}))$ 

Demo

https://regex101.com/r/oT7iM2/5

+0

Dzięki za dodanie wersji demonstracyjnej. – Prasanna

0

ja po prostu stosować następujące wyrażenia regularnego:

http(s)?:\/\/([w]{3}\.)?linkedin\.com\/in\/([a-zA-Z0-9-]{5,30})\/? 

Zgodnie z najnowszą dokumentacją Linkedin, niestandardowy URL profilu może mieć 5-30 liter lub cyfr.

Działa na poniższej listy URL:

https://www.linkedin.com/in/your-profile-5-30-length/ 
https://linkedin.com/in/your-profile-5-30-length/ 
http://www.linkedin.com/in/your-profile-5-30-length/ 
http://linkedin.com/in/your-profile-5-30-length/ 
Powiązane problemy