2017-11-27 8 views
-3

JPEG/PNG画像へのリンクを見つけようとしました。私は、ファイル拡張子なしでリンクを検索していそれはOK働くcheckm:?JPG/PNGへのリンクのpreg_match_all

preg_match_all('/<a.+href=[\'"]([^\'"]+).[\'"].*><img/i', $text, $matches); 

しかし、今私は、PNG/JPGのためのフィルタを追加しようとしています:(あなたは私を助けることができます。.. DOMDOCUMENTが解決しよう

+4

正規表現を使用してHTMLを解析することは、悪い考えです(https://stackoverflow.com/questions/590747/using-regular-expressions-to-parse-html-why-not)。[奇妙な結果](https://stackoverflow.com/a/1732454/2370483) – Machavity

+2

''フィルタを追加しようとしています - 具体的に*あなた*が試したことは? '(png | jpg)'を追加しました。あなたの試行の正規表現の部分のどこかに? (文法を知らず、研究していないことは2つの異なることに注意してください。) – mario

+0

mario、はい、私はそれを追加しようとしました。しかし、$マッチでは拡張子のないURLがあります。 – Rudomilov

答えて

0

$dom = new DOMDocument(); 
@$dom->loadHTML($post->post_content); 
$dom->preserveWhiteSpace = false; 

$images = $dom->getElementsByTagName('img'); 

foreach ($images as $image) { 
    if($image->parentNode->nodeName=='a') { 
     print $image->parentNode->getAttribute('href'); 
    } 
}