2011-12-09 58 views
8

Estoy buscando una forma de validar un enlace para asegurarse de que está apuntando a una página de perfil público de LinkedIn en PHP.Cómo validar una url de perfil público de LinkedIn

Tengo un sitio web y me gustaría que mis usuarios puedan compartir su perfil de LinkedIn en su perfil en mi sitio web.

+0

creé la clase de [validar la URL linkedin] (https://github.com/gchokeen/linkedinURLValidator). – Gowri

Respuesta

4

Pruebe algo como esto donde $username es el nombre de usuario enlazado. También puede establecer $ profileurl directamente al enlace dado y comprobar con str_pos que se inicia con 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 será un valor lógico que indica si el perfil es válido.

+7

no se olvide '/ in/username' solo si el usuario ha elegido una url personalizada. De lo contrario, se parece más a '/ pub/fname-lname-etc/4/72/8a0' – codercake

0

Utilice una expresión regular para asegurarse de que el enlace coincida con el formato adoptado por los perfiles públicos de linkedin.

5

He encontrado un número de formas en que la URL de su perfil puede verse como:

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/ 

He usado esta expresión regular para describirlo:

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

No es estricta, pero estricta me llevo a casa

edición
- Se ha añadido la compatibilidad con https

+0

Estoy viendo un formulario que se parece a' https: //www.linkedin.com/profile/view? Id = 12345678' ahora. –

+0

regex funcionó para mí. –

2

Esto se prueba la expresión regular que yo uso en mi sitio web. Encajo todas las variaciones que existen actualmente.

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

¿Cómo se puede hacer que el protocolo http/https/ftp sea opcional en esto? ¿Qué pasa si alguien acaba de ingresar a www.linkedin.com/their-profile-name, sin http. Aparte de eso, esto funciona. –

+0

@NalinAgrawal Puede usar cualquier combinación de URL y obtendrá el resultado correcto. Cambio un código de bit pero el patrón es el mismo. Si comprende Regex, verá ese trabajo con o sin http, https y www –

3

uso otra expresión regular más permisiva:

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

Incluye URL sin squeme y todas las muestras de otras respuestas. Usted puede hacer cualquier variación aquí http://regex101.com/r/vE8tV7

+0

Esto rompe las URL de búsqueda como http://www.linkedin.com/pub/dir/+/semnani/us-49-greater-los -angeles-area –

3

Después de la expresión le ayudará con todos los patrones:

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

demostración

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

+0

Gracias por agregar Demo. – Prasanna

0

simplemente he utilizado la siguiente expresión regular:

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

De acuerdo con la última documentación de Linkedin, la URL del perfil personalizado puede tener de 5 a 30 letras o números.

Funciona para la siguiente lista de 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/ 
Cuestiones relacionadas