如何验证LinkedIn公开个人资料链接

13

我希望找到一种验证链接的方法,以确保它指向一个PHP中的LinkedIn公共个人资料页面。

我有一个网站,我希望我的用户能够在他们的个人资料中分享他们的LinkedIn资料。


我创建了这个类来验证linkedin网址 - Gowri
10个回答

6

我找到了一些可能的个人资料链接格式:

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/

我已经使用这个正则表达式来描述它:
^https?://((www|\w\w)\.)?linkedin.com/((in/[^/]+/?)|(pub/[^/]+/((\w|\d)+/?){3}))$

虽然不是非常严格,但它帮我回家了。

编辑
- 添加了 https 支持。


我现在看到一个看起来像 https://www.linkedin.com/profile/view?id=12345678 的表单。 - Stephen Ostermiller
如果URL如下所示,则无法正常工作: http://linkedin.com/in/namehttp: http://linkedin.com/in/namewww. http://linkedin.com/in/namehttps: - spratap124
我的意思是,如果用户输入了多个http:或www.或https:怎么办? - spratap124

6

以下表达式将帮助您处理所有模式:

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

Demo

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


LinkedIn个人资料网址可以包含非拉丁字符,并且可以由用户提供的纯文本或URL编码形式提供给您。例如https://www.linkedin.com/in/святий-миколай-bbc1aaahttps://linkedin.com/in/%D1%81%D0%B2%D1%8F%D1%82%D0%B8%D0%B9-%D0%BC%D0%B8%D0%BA%D0%BE%D0%BB%D0%B0%D0%B9-bbc1aaa。在这两种情况下,这个表达式都会失败。但对于URL编码的URL,只需将%添加到字符类[\w|\d-&#?=]中即可解决问题。 - undefined

5

试试类似以下的代码,其中$username是linked-in的用户名。 你也可以直接将$profileurl设置为给定的链接,并使用str_pos验证它是否以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将是一个布尔值,表示配置文件是否有效。


7
请不要忘记,/in/username 只有在用户选择了自定义 URL 时才会出现。否则它看起来更像 /pub/fname-lname-etc/4/72/8a0 - codercake

4

我使用了另一个更宽松的正则表达式:

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

它包括没有方案的URL以及其他答案中的所有示例。您可以在此处进行任何变化http://regex101.com/r/vE8tV7


这会导致搜索URL(如http://www.linkedin.com/pub/dir/+/semnani/us-49-greater-los-angeles-area)出现错误。 - Karthik T
这个怎么样:https://regex101.com/r/vE8tV7/38 只有 pub 没有,因为到目前为止,我还没有找到任何类似的网址。 - spa900

3

这是我在网站上使用的经过测试的正则表达式。它适用于目前存在的所有变体。

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

你如何使http/https/ftp协议在这里变成可选的?如果有人只输入www.linkedin.com/他们的个人资料名称,没有http,该怎么办?除此之外,这个程序是有效的。 - zookastos
@NalinAgrawal 你可以使用任何URL组合,都会得到正确的结果。我稍微改了一下代码,但模式是相同的。如果你理解正则表达式,你会发现它可以在有或没有http、https和www的情况下工作。 - Ivijan Stefan Stipić

2

2
FYI:开发者页面的URL现在已失效。 - Jean-Francois T.
因为链接无效而被踩了。 - fatfrog

2

这涵盖了大多数 LinkedIn 个人资料 URL (Javascript 正则表达式):

// Generic RegEx exact match validator
export const isRegexExactMatch = (value, regexp) => {
  const res = value.match(regexp);
  return res && res[0] && res[0] === res.input;
};

const isLinkedinProfileUrl = (value) => {
  const linkedInProfileURLRegExp =
    '(https?:\\/\\/(www.)?linkedin.com\\/(mwlite\\/|m\\/)?in\\/[a-zA-Z0-9_.-]+\\/?)';
  return !!isRegexExactMatch(value, linkedInProfileURLRegExp);
};

当我将其放入我的代码中时,它向我显示错误,我认为您添加了额外的“/”,更新后的正则表达式为/https?:\/\/(www.)?linkedin.com\/(mwlite\/|m\/)?in\/[a-zA-Z0-9_.-]+\/?/ - AliRehman7141

1
我可以为JavaScript中领英所有类型的URL提供此功能。
export const isValidLinkedinUrl = (url) => {
  return /(https?:\/\/(www.)|(www.))?linkedin.com\/(mwlite\/|m\/)?in\/[a-zA-Z0-9_.-]+\/?/.test(url);
};

只使用正则表达式

/(https?:\/\/(www.)|(www.))?linkedin.com\/(mwlite\/|m\/)?in\/[a-zA-Z0-9_.-]+\/?/

0
使用正则表达式,确保链接与LinkedIn公共个人资料的形式相匹配。

0
我只是使用了以下正则表达式:
http(s)?:\/\/([w]{3}\.)?linkedin\.com\/in\/([a-zA-Z0-9-]{5,30})\/?

根据最新的Linkedin文档,自定义个人资料网址可以包含5-30个字母或数字。

以下是支持的网址列表:

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/

文档仍然说着这个,但它已经过时或不准确了。https://linkedin.com/in/eee https://linkedin.com/in/abc - user4698348
1
请注意,https://www.linkedin.com/in/%D0%B0%D0%BB%D0%B5%D0%BA%D1%81%D0%B0%D0%BD%D0%B4%D1%80-%D0%B1%D0%BE%D0%B1%D1%8B%D0%BB%D0%B5%D0%B2-45456994/ 是有效的链接,这是因为大多数系统会将UTF-8西里尔字母解析为%NN字符,因此其长度远超过30个字符,甚至90个字符。 - Dewi Morgan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接