我很难过为什么管子不起作用。
/(?:<img.*?src=[\'"](.*?)[\'"].*?>)|(http(?:[^\s]*)\.(?:jpg|jpeg|gif|png))/
以下是代码的完整代码:http://pastebin.com/J2y8jbsg
例如:
之类的链接http://guardianlv.com/wp-content/uploads/2014/03/Robots-The-Possibilities-of-Artificial-Intelligence.jpg
如果第二个正则表达式模式是单独的,将捕获。 (http(?:[^\s]*)\.(?:jpg|jpeg|gif|png))
但是当我把它添加到另一个时,如上面最初所示和在pastebin中,作为管道,我得到的只是一个空数组:
Array ( [0] => [1] => )
有人可以解释一下吗?而且解决方案也会有所帮助:)谢谢。
答案 0 :(得分:1)
在你的第一部分:
<img.*?src=[\'"](.*?)[\'"].*?>
^
这是第一个捕获组。所以:
(http(?:[^\s]*)\.(?:jpg|jpeg|gif|png)
是你的第二个捕获组。所以:
foreach ( $matches[1] as $url ) {
不正确。您可以使用:
foreach ( $matches[2] as $url ) {
或
foreach ( $matches[0] as $url ) {
完整比赛。
Regex101演示:https://regex101.com/r/KXjmo3/1