我希望找到一种验证链接的方法,以确保它指向一个PHP中的LinkedIn公共个人资料页面。
我有一个网站,我希望我的用户能够在他们的个人资料中分享他们的LinkedIn资料。
我希望找到一种验证链接的方法,以确保它指向一个PHP中的LinkedIn公共个人资料页面。
我有一个网站,我希望我的用户能够在他们的个人资料中分享他们的LinkedIn资料。
我找到了一些可能的个人资料链接格式:
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 http://linkedin.com/in/namehttp:
http://linkedin.com/in/namewww.
http://linkedin.com/in/namehttps:
- spratap124以下表达式将帮助您处理所有模式:
((https?:\/\/)?((www|\w\w)\.)?linkedin\.com\/)((([\w]{2,3})?)|([^\/]+\/(([\w|\d-&#?=])+\/?){1,}))$
Demo
https://www.linkedin.com/in/святий-миколай-bbc1aaa
或https://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试试类似以下的代码,其中$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
将是一个布尔值,表示配置文件是否有效。
/in/username
只有在用户选择了自定义 URL 时才会出现。否则它看起来更像 /pub/fname-lname-etc/4/72/8a0
。 - codercake我使用了另一个更宽松的正则表达式:
^(http(s)?:\/\/)?([\w]+\.)?linkedin\.com\/(pub|in|profile)
它包括没有方案的URL以及其他答案中的所有示例。您可以在此处进行任何变化http://regex101.com/r/vE8tV7
这是我在网站上使用的经过测试的正则表达式。它适用于目前存在的所有变体。
var linkedin=/(https?)?:?(\/\/)?(([w]{3}||\w\w)\.)?linkedin.com(\w+:{0,1}\w*@)?(\S+)(:([0-9])+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/;
这涵盖了大多数 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_.-]+\/?/
。 - AliRehman7141export 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_.-]+\/?/
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://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