1
Septembers 2015-05-03 00:37:13 +08:00 via Android
|
2
shiny 2015-05-03 00:48:29 +08:00
这个不应该用 DOM 处理嘛
|
3
Septembers 2015-05-03 01:25:12 +08:00
@shiny 注意题者的环境是PHP解析DOM再操作的代价。。。。。。。。。。。。
|
4
feiyuanqiu 2015-05-03 05:26:56 +08:00
你看一下 preg_match_all 的文档,它会返回匹配的次数,你直接用这个次数就可以获取到最后一个匹配:
<?php $article = <<<EOT <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>test</title> </head> <body> <img src="//cdn.v2ex.co/avatar/2cd8/7697/76017_large.png?m=1412760421" class="avatar" border="0" align="default"> <img src="//cdn.v2ex.co/avatar/2cd8/7697/76017_large.png?m=1412760422" class="avatar" border="0" align="default"> <img src="//cdn.v2ex.co/avatar/2cd8/7697/76017_large.png?m=1412760423" class="avatar" border="0" align="default"> <img src="//cdn.v2ex.co/avatar/2cd8/7697/76017_large.png?m=1412760424" class="avatar" border="0" align="default"> </div> </body> </html> EOT; $pattern = '/<img[^>]+src\\s*=\\s*[\'\"]([^\'\"]+)[\'\"][^>]*>/im'; // 设置 flag 为 PREG_SET_ORDER if ($match = preg_match_all($pattern, $article, $matches, PREG_SET_ORDER)) { var_dump($matches[--$match]); } // 不设置 PREG_SET_ORDER if ($match = preg_match_all($pattern, $article, $matches)) { var_dump($matches[0][--$match]); } |
5
feiyuanqiu 2015-05-03 05:29:37 +08:00
或者不需要 preg_match_all 的返回值:
if (preg_match_all($pattern, $article, $matches, PREG_SET_ORDER)) { $last = array_pop($matches); var_dump($last); } |
6
ab OP @feiyuanqiu 非常感谢
|