【发布时间】:2014-02-20 04:37:44
【问题描述】:
我使用 php 并从文本框中获取以下文本字符串。
这是一个字符串我有:
header1 header2 edit
b-1246431 12.01.13 1246431 | blog.domain.net 1232,00
details
b-1312231 12.01.13 1246431 | blog.domain.co.uk 12312,00
b-2344311 12.01.13 1246431 | www.domain.com/ 9129,00
b-2344322 12.01.13 1246431 | http://abc.de 1332,00
b-2344322 13.01.13 1246431 | www.cdf.de/ 21140,00 edit
b-1233422 06.01.13 1246431 | www.dto.de/site1 21110,00
b-1233542 06.01.13 1246431 | www.ghj.ca/site2.html 28110,00 edit
b-1231242 06.01.13 1246431 | www.another.de 2101,00
b-1231231 04.01.13 1246431 | onlyme.info/
我想要这个输出:
blog.domain.net
blog.domain.co.uk
www.domain.com/
http://abc.de
www.cdf.de/
www.dto.de/site1
www.ghj.ca/site2.html
www.another.de
onlyme.info/
字符串会改变。我总是需要只需要提取的网址。 问题可能是:有时 url 以 www、http 开头,或者两者都没有。仍然应该将它们视为 url。
我已经查过这些帖子: extracting one or more urls from a string in php http://daringfireball.net/2010/07/improved_regex_for_matching_urls
...但我的文本字符串没有任何效果...
【问题讨论】:
-
看起来很有条理。为什么不用
|和一个空格爆炸两次? -
每个字符串都会不同。下一个字符串可能没有'|' ...
-
当你没有
|时,它会被任何其他分隔符替换吗?如果是,您可以按空格分割字符串,然后从结果中检索第 5 列,因为 URL 将位于第 5 位。此外,URL 是否始终是字符串格式而不是 IP?如果 URL 之前的所有内容都是数字,这也有帮助。