我从字符串中提取文件,该字符串可由用户输入或从阅读页面源中获取。
我想提取所有.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');
有时图像引用不在标准标记中
答案 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;
}