2012-02-17 12 views
1

私はJoomlaの中で、物品からの最初の画像を抽出し、このコードを持っている: エキスJoomlaの記事からすべての画像

<?php preg_match('/<img (.*?)>/', $this->article->text, $match); ?> 
<?php echo $match[0]; ?> 

は記事だけではなくで利用可能なすべての画像を抽出する方法はあります1?

答えて

2

最初に正規表現を使用しないでHTMLを解析することをお勧めします。 libxmlを使用するappropiate parserDOMDocument::loadHTMLなど)を使用する必要があります。

次に、必要なタグを問い合わせることができます。これは次のように動作します(テストされていません):

$doc = new DOMDocument; 
$doc->loadHTML($htmlSource); 

$xpath = new DOMXPath($doc); 
$query = '//img'; 
$entries = $xpath->query($query); 
foreach ($entries as $entry) { 
    // $entry->getAttribute('src') 
} 
+0

でそれらをクリアしません。属性にアクセスできるのでこのアプローチが好きです。あなたも最初に答えたので勝ちます。 Thanx – themis

+0

私はもう一度使ったことに言及するだけです。悪い私は再びまた好きではない:P – themis

1

preg_match_allを使用してください。そして、あなたはimgタグの中の末尾の '/'を考慮に入れるようにパターンを修正したいでしょう。

$str = '<img src="asdf" />stuff more stuff <img src="qwerty" />'; 
preg_match_all('/<img (.*?)\/>/', $str, $matches); 
print_r($matches); 

Array 
(
    [0] => Array 
     (
      [0] => <img src="asdf" /> 
      [1] => <img src="qwerty" /> 
     ) 

    [1] => Array 
     (
      [0] => src="asdf" 
      [1] => src="qwerty" 
     ) 

) 
+0

これは、今後の使用のために正規表現を保存しました。ありがとうございます – themis

+1

@アレクサンダーのアプローチは、HTMLを解析するためのより良いものです。 –

+0

heheと私はこれを使用するために戻った。うまく動作しますが、イメージに属性がある場合idは配列[1] [0] – themis

関連する問題