簡體   English   中英

使用 preg_match_all 提取鏈接

[英]Extracting links using preg_match_all

我想使用 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]);

您可以使用簡單的正則表達式來做到這一點,

采用:

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);

 ?>
<!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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM