PHP-preg_match_all()を使用してhtmlページから画像のパスを抽出したいのですが、パターンは次のとおりです。
<img width="148" height="110" src="https://link1">
<img width="104" height="129" src="https://link2">
<img width="150" height="129" src="https://linkn">
配列内のすべての画像パスが必要です。
PHP-preg_match_all()を使用してhtmlページから画像のパスを抽出したいのですが、パターンは次のとおりです。
<img width="148" height="110" src="https://link1">
<img width="104" height="129" src="https://link2">
<img width="150" height="129" src="https://linkn">
配列内のすべての画像パスが必要です。
試す:
preg_match_all("/<img .*?(?=src)src=\"([^\"]+)\"/si", $html, $m);
print_r($m);
また
preg_match_all("/<img .* src=\"([^']*?)\">/", $html, $m);
echo "<pre>";
print_r($m[1]);
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="tr" lang="tr" dir="ltr">
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-9" />
<style type="text/css">
<!--
html,body,div,span,h1,h2,h3,p,hr,br,img,form,input,ul,li,a {
margin:0;
padding:0;
border:0;
}
ul li {list-style:none;}
body {
font-family:Helvetica, Arial, Tahoma, sans-serif;
font-size:13px;
color:#444;
line-height:1.5em;
}
#kapsayici {
background:#fff;
margin:10px auto;
width:960px;
border:0px solid #dfdfdf;
min-height: 700px;
}
-->
</style>
</head>
<body>
<div id="kapsayici">
<?php
$url = "http://www.mynet.com";
$icerik = file_get_contents($url);
$resimler = array();
preg_match_all('/(img|src)=("|\')[^"\'>]+/i', $icerik, $veriler);
$dizi=preg_replace('/(img|src)("|\'|="|=\')(.*)/i',"$3",$veriler[0]);
foreach($dizi as $row) {
$bilgi = pathinfo($row);
if (isset($bilgi['extension'])) {
$bilgi['extension'] = strtolower($bilgi['extension']);
if (($bilgi['extension'] == 'jpg') || ($bilgi['extension'] == 'jpeg') || ($bilgi['extension'] == 'gif') || ($bilgi['extension'] == 'png')) array_push($resimler, $row);
}
}
$resimler=array_unique($resimler);
echo "<ul>\n";
if (count($resimler)) {
$i_count=0;
foreach($resimler as $resim) {
$i_count++;
echo "<li><img src=\"{$resim}\" /></li>\n";
}
}
echo "</ul>\n";
?>
</div>
</body>
</html>
単純な正規表現を使用してそれを行うことができます、
使用する:
preg_match_all('/<img .*?(?=src)src=\"([^\"]+)\"/si', $imglink, $result, PREG_PATTERN_ORDER);
$imglinkは各画像リンクです
と
$ resultは、配列内の結果です。
ループあり:
<?php
$subject = array (
'<img width="148" height="110" src="https://link1">'
, '<img width="104" height="129" src="https://link2">'
, '<img width="150" height="129" src="https://linkn">'
);
foreach ($subject as $imglink) {
preg_match_all('/<img .*?(?=src)src=\"([^\"]+)\"/si', $imglink, $result, PREG_PATTERN_ORDER);
$link[] = $result[1];
}
echo "<pre>";
print_r ($link);
?>