Php解析字符串错误

时间:2012-08-05 00:53:08

标签: php parsing dom strpos

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

我想提取所有.jpg图片网址

所以,我正在使用以下内容(显示示例文本),但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');有时图像引用不在标准标记中

2 个答案:

答案 0 :(得分:0)

您可以这样做:

<?php

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

$matches = array();

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

print_r($matches);

答案 1 :(得分: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;
}