我需要自动解析字符串并查找是否存在指向我的网站的链接,并自动将地址替换为可点击的 HTML 链接。
假设我的网站地址是 www.mysite.com + wap.mysite.com + m.mysite.com,我需要转换:
My pictures at m.mysite.com/user/id are great.
to:
My pictures at <a href="/user/id" target="_blank">mysite.com/user/id</a> are great.
问题是如何做到这一点(使用ereg_replace?)而不是使用大量代码行.
注意结果必须是相对 URL,以便当前协议和子域用于目标链接。如果用户位于HTTPS版本的m子域,则目标将是HTTPS协议的m子域,依此类推。只能链接到 mysite.com 的链接,任何其他链接都必须被视为普通的纯文本。提前致谢!
第一条建议,远离ereg,它已被弃用很长时间了。其次,你可能可以谷歌并尝试编造一个preg适合您的表达方式,因此请调整我这里的内容以满足您的需求。
我能够组合一个相当简单的正则表达式模式来搜索 URL。
preg_match("/m.mysite.com\S+/", $str, $matches);
一旦你有了网址,我建议解析网址 https://www.php.net/manual/en/function.parse-url.php而不是正则表达式。
这是代码
$sSampleInput = 'My pictures at http://m.mysite.com/user/id are great.';
// Search for URLs but don't look for the scheme, we'll add that later
preg_match("/m.mysite.com\S+/", $sSampleInput, $aMatches);
$aResults = array();
foreach($aMatches as $sUrl) {
// Tack a scheme afront the URL
$sUrl = 'http://' . $sUrl;
// Try validating the URL, requiring host & path
if(!filter_var(
$sUrl,
FILTER_VALIDATE_URL,
FILTER_FLAG_HOST_REQUIRED|FILTER_FLAG_PATH_REQUIRED)) {
trigger_error('Invalid URL: ' . $sUrl . PHP_EOL);
continue;
} else
$aResults[] =
'<a href="' . parse_url($sUrl, PHP_URL_PATH) .
'" target="_blank">' . $sUrl . '</a>';
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)