4

假设我有一个充满 Twitter 帖子的大型 RSS 提要,它们都是纯文本。很多帖子都包含 URL,我希望将这些 URL 转换为链接。

所以我有一个变量等于:

按行业、数量和日期可视化裁员。期待看到类似的招聘趋势。http://bit.ly/XBW4z

我希望它变成:

按行业、数量和日期可视化裁员。期待看到类似的招聘趋势。http://bit.ly/XBW4z

我怎么能那样做?对于正则表达式及其同类,我毫无用处,因此非常感谢您的帮助!

4

6 回答 6

2

取决于你想匹配什么

一个不错的简单正则表达式是

http\://[a-zA-Z0-9./?&_\-]*

它将匹配任何以- A 到 Z、0 到 9、、、、、开头http://并仅包含字符的url 。[]-./?&

如果要匹配其他协议(https,ftp等),可以使用

(http|ftp|你想要的任何其他协议)\://[a-zA-Z0-9./?&_\-]*

如果您想支持更多字符,只需将它们添加到[].

更新:忘记大写支持!德欧

于 2009-03-11T18:53:48.800 回答
2

即使我想要一个...检查搜索结果中的第一个链接。它很旧!

顺便说一句,看看 RHS .. 我们有类似的问题。 在纯文本 正则表达式中识别文本或 html 中的 url 和图像的 URL

于 2009-03-11T18:56:00.930 回答
1

只是为了添加一些信息......在 phpclass.org 上检查这个类,将解决你的问题......这个类将找到链接并转换它们......

http://www.phpclasses.org/browse/package/6114.html

于 2010-04-02T14:11:05.413 回答
1

好的,这里的这个问题(文本或 html 中的 url 和图像的正则表达式)有一个令人费解的标题,但在底部有一个有用的答案。至少,它适用于我和我的情况!

$text = preg_replace('@(http://([\w-.]+)+(:\d+)?(/([\w/_.]*(\?\S+)?)?)?)@', 
                 '<a href="$1">$1</a>', $text);
于 2009-03-11T19:07:30.827 回答
1

查看 preg_replace 函数。所以是这样的:

$regex_url = "((https?|ftp|gopher|telnet|file|notes|ms-help):((//)|(\\\\))+[\w\d:#@%/;$()~_?\+-=\\\.&]*)";

preg_replace($regex_url, '<a href="$1">$1</a>', $your_input_string);

URL 的正则表达式取自:http ://www.geekzilla.co.uk/view2D3B0109-C1B2-4B4E-BFFD-E8088CBC85FD.htm

于 2009-03-11T19:08:02.337 回答
0

有匹配有效 URL 的正则表达式。例如URLs 的完整正则表达式,它源自 URLs 的语法定义。

但最好明确声明它们而不是试图找到它们。因为在某些情况下无法区分,如果某些字符是 URL 的一部分或只是文本。

于 2009-03-11T19:00:34.867 回答