2017-10-04 3 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

을 필요가있다 두 번째 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]은 값이라는 것입니다.