2011-04-03 11 views
1

こんにちは私は以下のすべてのユニークなマッチを取得したいと思います。どうしたらいいですか?preg_match_allと一意の一致のみを取得する方法はありますか?

preg_match_all('#http://[\S]+(?:jpe?g|png|gif)#is', $content, $filtered); 

$filtered = array_unique($filtered[0]); 
foreach($filtered as $value){ 
${'varpics' . $i} .= '<img width="200px" height="200px" src="'.$value.'"><br>'; } 

まだ二重一致があります。

答えて

3

いいえ結果をarray_uniqueに渡すだけです。

preg_replace_callbackで本当に気に入って一組にしたいのでない限り、私のために完璧に動作


<?php 
$content = <<<HTML 
<img src="http://www.mysite.com/image1.jpg" /> 
<img src="http://www.mysite.com/image2.gif" /> 
<img src="http://www.mysite.com/image1.jpg" /> 
HTML; 

preg_match_all('#http://[\S]+(?:jpe?g|png|gif)#is', $content, $matches); 
$images = array_unique($matches[0]); 

var_dump($images); 
。出力:

array 
    0 => string 'http://www.mysite.com/image1.jpg' (length=32) 
    1 => string 'http://www.mysite.com/image2.gif' (length=32) 

あなたのコードには他にも多くの問題があります。たとえば、$iはどこに定義されていますか?なぜあなたはそのような変数を定義しようとしていますか?数字を付けた名前ではなく、配列を使用してください...それが有効な構文であるかどうかはわかりません。

+1

私はarray_uniqueを推奨します。これはよりクリーンなアプローチです。 – Christian

+0

こんにちはマーク。更新されたコードを確認してください。私はまだダブル結果を得ます – EnexoOnoma

+0

@Punkis:更新を参照してください。 – mpen

関連する問題