相关(但略有不同):
Javascript 正则表达式:一次性用锚标记包围 @_____、#_____ 和 http://______? https://stackoverflow.com/questions/1181204/javascript-regex-surround-and-http-with-anchor-tags-in
我想包围@_______、#________和的所有实例http://________
带有锚标签。多次通过对我来说没问题。
例如,考虑以下 Twitter 消息:
The quick brown fox @Spreadthemovie jumps over the lazy dog #cow, http://bit.ly/bC9Dy
使用所需的正则表达式模式运行它会产生:
The quick brown fox <a href="blah/Spreadthemovie">@Spreadthemovie</a> jumps over the lazy
dog <a href="blah/cow">#cow</a>, <a href="blah/http://bit.ly/bC9Dy">http://bit.ly/bC9Dy</a>
仅包围以@、#或http://开头的单词,这样dog@gmail.com就不会变成[电子邮件受保护] /cdn-cgi/l/email-protection。另外,请注意如何“#cow,
“ 转换成 ”<a href=urlB>#cow</a>,
“ ...我只希望字母数字字符位于每个锚标记子字符串的末尾。另请注意 href 属性。
如果可能,请包含带有正则表达式模式和替换函数的实际 JavaScript 代码。
非常感谢!这个问题困扰我有一段时间了
在我的代码中我有类似的功能,您可以查看并更改它以满足您的需求:
function checkChatUrl($matches)
{
if(strpos($matches[0],'http://www.xxx.pl/?task=forum')!==false) $n='>forum';
elseif(strpos($matches[0],'http://www.xxx.pl')!==false) $n='>xxx';
elseif(strpos($matches[0],'db.php')!==false) return "";
elseif(strpos($matches[0],'%22')!==false) return "";
else $n=">".substr($matches[1].$matches[2],0,10).((strlen($matches[1].$matches[2])>10)?'..':'');
return "<a href='http://$matches[1]$matches[2]' target=_blank $n</a>";
}
$text=preg_replace_callback("/\bhttp:\/\/([\w\.]+)([\#\,\/\~\?\&\=\;\-\w+\.\/]+)\b/i",'checkChatUrl',$text);
这是为聊天中的 url 链接设计的,它使其名称更短,并且对于某些 url 使用准备好的快捷方式。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)