【发布时间】:2014-02-04 10:54:57
【问题描述】:
我解析包含多个链接的文本。其中一些包含空格,但有一个文件结尾。我目前的模式是:
preg_match_all('#\bhttps?://[^\s()<>]+(?:\([\w\d]+\)|([^[:punct:]\s]|/))#', $links, $match);
同样的方法:
preg_match_all('/(http|https|ftp|ftps)\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(\/\S*)?/', $links, $match);
我对这些模式了解不多,也没有找到一个很好的教程来解释所有可能的模式的含义并显示示例。
如何过滤这样的 URL: http://my-url.com/my doc.doc 甚至是http://my-url.com/my doc with more white spaces.doc
preg_match_all 函数中的\s 代表一个空格。但是如何检查是否有一个文件以一个或一些空格结尾?
有可能吗?
【问题讨论】:
-
您无法过滤此类网址。如果我写
Go to http://www.google.com/search and type your search query。您如何以编程方式知道该 url 是http://www.google.com/search或http://www.google.com/search and type?也许有一些自然语言分析,但即使这样也不是很明显。 -
urlencode可能就是你要找的东西 -
啊好吧!这很可悲,因为这些 URL 存在。我以为我可以过滤它们。不过没关系,我只需要重命名文件。
标签: php regex url preg-match whitespace