1

我正在从一个字符串中提取文件,该字符串可以由用户输入或从读取页面源中获取。

我想提取所有 .jpg 图像 URL

所以,我正在使用以下(显示的示例文本)但是 a)它只返回第一个,b)它错过了 '.jpg'

$word1='http://';
$word2='.jpg';

$contents = 'uuuuyyyyyhttp://image.jpgandagainhereitishttp://image2.jpgxxxxcccffff';

$between=substr($contents, strpos($contents, $word1), strpos($contents, $word2) - strpos($contents, $word1));

echo $between;  

有没有更好的方法来做到这一点?

在解析网页的情况下,我不能使用简单的 DOM,例如$images = $dom->getElementsByTagName('img');有时图像引用不在标准标签中

4

2 回答 2

0

你可以这样做:

<?php

$contents = 'uuuuyyyyyhttp://image.jpgandagainhereitishttp://image2.jpgxxxxcccffff';

$matches = array();

preg_match_all('#(http://[^\s]*?\.jpg)#i',$matches);

print_r($matches);
于 2012-08-05T01:05:14.293 回答
0

您可以使用preg_match_all(如前所述)执行此操作,也可以使用以下函数。

它只是分解原始字符串,检查所有部分的有效链接并将其添加到数组中,然后返回。

function getJpgLinks($string) {
    $return = array();
    foreach (explode('.jpg', $string) as $value) {
        $position = strrpos($value, 'http://');
        if ($position !== false) {
            $return[] = substr($value, $position) . '.jpg';
        }
    }
    return $return;
}
于 2012-08-05T02:23:27.343 回答