假设我有一个充满Twitter帖子的大型RSS源,它们都是纯文本。很多帖子都包含网址,我希望将这些网址转换为链接。
所以我有一个等于的变量:
按行业,数量和日期可视化裁员。期待看到类似的招聘趋势。 http://bit.ly/XBW4z
我希望它变成:
按行业,数量和日期可视化裁员。期待看到类似的招聘趋势。 http://bit.ly/XBW4z
我怎么能这样做?当谈到正则表达式及其同类时,我没用,所以非常感谢帮助!
答案 0 :(得分:2)
取决于您想要匹配的内容
一个漂亮,简单的正则表达式
http\://[a-zA-Z0-9./?&_\-]*
哪个匹配任何以http://
开头的网址,并且只包含[]
中的字符 - A到Z,0到9,-
,.
,{{ 1}},/
,?
。
如果您想与其他协议(&
,https
等)匹配,可以使用
(http|ftp|anyotherprotocolyouwant)\://[a-zA-Z0-9./?&_\-]*
如果您想支持更多字符,只需将其添加到ftp
。
更新:忘记大写支持! D'哦
答案 1 :(得分:2)
即使我想要一个......检查search result中的第一个链接。它很老了!
和BTW看看RHS ..我们有类似的问题。 Recognize URL in plain text regex for url and image within a text or html
答案 2 :(得分:1)
好的,这里的问题(regex for url and image within a text or html)有一个莫名其妙的标题,但在底部是一个有用的答案。至少,它适用于我和我的案例!
$text = preg_replace('@(http://([\w-.]+)+(:\d+)?(/([\w/_.]*(\?\S+)?)?)?)@',
'<a href="$1">$1</a>', $text);
答案 3 :(得分: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);
来自以下网址的正则表达式:http://www.geekzilla.co.uk/view2D3B0109-C1B2-4B4E-BFFD-E8088CBC85FD.htm
答案 4 :(得分:1)
只是添加一些信息...在phpclass.org上检查这个类,将解决你的问题......这个类会找到链接并将它们转换为...
答案 5 :(得分:0)
有正则表达式匹配有效的URL。例如the complete regular expression for URLs,它来自URL的语法定义。
但明确声明这些比尝试找到它们更好。因为在某些情况下无法区分,如果某些字符是URL的一部分或只是文本。