2017-10-04 13 views
1

foreachループ内の項目の数を制限しようとしています。 URLが含まれている場合は文字列をチェックしている場合は、JPG拡張子をチェックします。複数の結果が与えられているので、私はちょうど1にそれらのを制限したいと思います:PHPはforeachループ内の項目を制限します

preg_match_all('#\bhttps?://[^,\s()<>]+(?:\([\w\d]+\)|([^,[:punct:]\s]|/))#', $mystring, $match); 

    foreach ($match[0] as $link){ 

    $strpos = strpos($link, '.jpg'); 
     if ($strpos !== false){ 
     $i_img = 0; 
      foreach ($link as $imageurl){ 
      if ($i_img == 1) break; 
       echo '</br>'.$imageurl; 
       $i_img++; 
      } // end foreach 
     } // end if strpos 

    } // end foreach 

私はエラー「警告:無効な引数がforeachのために供給される()」を取得

+1

'$ link'は配列ではない文字列変数です。あなたは' foreach() 'を使って配列を扱っています。それがエラーを起こす理由です –

答えて

2

を私は必要性があるとは思いません2番目のforeachループのために。

は以下ができます

<?php 

//Test string 
$mystring = 'https://image.jpg, https://second.jpg'; 

preg_match_all('#\bhttps?://[^,\s()<>]+(?:\([\w\d]+\)|([^,[:punct:]\s]|/))#', $mystring, $match); 

foreach ($match[0] as $link){ 
    $strpos = strpos($link, '.jpg'); 
    if ($strpos !== false){ 
     //do something meaningful here. 
     echo $link; //https://image.jpg 
     break; 
    } 
} 

希望.JPGあなたに最初に見つかったを取得する必要があります!

0
foreach($match[0] as $link) 

はエラーです。私は問題がforeachは配列が必要ですが、$match[0]は単なる値であると思います。

関連する問題