需要进一步扩展此正则表达式 URL/邮件解析器
Needing to expand this regex URL/mail parser a bit further
function make_clickable($text)
{
$ret = ' ' . $text;
$ret = preg_replace("#(^|['n ])(['w]+?://['w]+[^ '"'n'r't<]*)#ise", "'''1<a href='"''2'" >''2</a>'", $ret);
$ret = preg_replace("#(^|['n ])((www|ftp)'.[^ '"'t'n'r<]*)#ise", "'''1<a target='"_blank'" href='"http://''2'" >''2</a>'", $ret);
$ret = preg_replace("#(^|['n ])([a-z0-9&'-_'.]+?)@(['w'-]+'.(['w'-'.]+'.)*['w]+)#i", "''1<a href='"mailto:''2@''3'">''2@''3</a>", $ret);
$ret = substr($ret, 1);
return($ret);
}
- 问题:
- http://www.google.com,
- http://www.google.com;
- http://www.google.com。
- http://www.google.com:
- http://www.google.com?
- (http://www.google.com(
以及确保其他类似的域仍然有效:
- .
- http://www.google.co.uk
- http://www.google.us
根本不精通正则表达式,我从互联网上的某个地方偷走了这个脚本。
我知道正则表达式有局限性,这可能是其中之一,但任何帮助都将不胜感激。我还注意到这个网站正在使用一些不错的 javascript 来很好地解析 url。它适用于我的每个"问题"域,除了带有 (( 的域。谁能告诉我堆栈溢出的JS解析器在哪里?我无法找到它。
还有一个问题:我正在为一个报纸网站这样做(自动解析作者可能在他们的故事中写的链接,以及自动邮寄到电子邮件地址(。我认为使用javascript并让每个客户端计算机以这种方式呈现链接可能会更好。但我也希望它是可靠的,所以跨浏览器问题和noscript之类的东西可能会以这种方式发挥作用。有什么想法吗?
在我看来,
您希望将起始(^|['n ])
替换为'b
,以及无数其他问题......可能的更改:[^ '"'n'r't<]*
('w|'W(?='w|$))
第二个:
preg_replace('#'b(www|ftp)'.('w|'W(?='w|$))+#ise', '<a target="_blank" href="http://''0" >''0</a>', $ret);
。但这只是为了让你开始...这不是一件容易的事,我不愿意花时间让它更充分地证明;)
没有办法使你目前的方法符合标准,我也不能被打扰。由于您只是要求黑盒/魔术正则表达式代码,因此一个简单的解决方法是否定断言:
(?<![.?;:)])
在正则表达式中添加它 #ise
,因此它不会在最后匹配这些字符。
相关文章:
- 如何使用url加载程序在webpack中导入多个图像
- 使用php或javascript从facebook相册URL中删除多余的部分
- Angular JS IE9 Hashbang url rewriting
- JavaScript下拉菜单-点击按钮并根据所选值重定向到url
- 直接下载文件,而不是从window.open(url)
- 动态地改变“”的URL;添加新项目”;链接使用javascript/jquery
- 通过js在新选项卡中有条件地打开url
- CKFinder 3为所选文件返回错误的URL
- 如何获取不属于我项目的上一页的URL
- ReactJS映射:如何仅在url变量不为空时呈现html链接
- 在URL中传递JS对象
- 将纯文本URL转换为可单击链接
- Javascript html每点击一次就会更改url
- 以角度管理动态URL
- Mathias URL shortener
- 如何有效地将游戏数据存储在URL查询字符串中
- 使用带括号的图像URL作为jQuery的背景
- JS:检查URL中的参数,然后迭代一个参数为var的函数
- 需要进一步扩展此正则表达式 URL/邮件解析器
- 用javascript进一步解析url主机名