2013-07-08 131 views
0

我正在使用以下代码从多个网站获取Facebook网址。某些网站包含多个到Facebook的链接,但只想回显找到的第一个链接。foreach循环的第一个结果

$html = file_get_html('URL'); 
foreach($html->find('a') as $element) { 
$word_fb = $element->href; 
if ((strpos($word_fb, "http://www.facebook") === 0) || (strpos($word_fb, "https://www.facebook") === 0)){ 
echo $word_fb; 
} 

在此foreach循环中只回显第一个找到的结果的正确方法是什么?

+0

$元素是一个对象,你必须转换成数组或在第一个回声之后打破循环 – Sundar

回答

4

既然你有foreach内的额外的条件,一旦你已经找到了第一场比赛,可能会更易于使用break;

foreach($html->find('a') as $element) { 
    $word_fb = $element->href; 
    if ((strpos($word_fb, "http://www.facebook") === 0) || (strpos($word_fb, "https://www.facebook") === 0)){ 
     echo $word_fb; 
     break; 
    } 
} 

此外,您可以简化条件使用正则表达式:

if (preg_match('#^https?://www.facebook.com#', $word_fb)) { 
    echo $word_fb; 
    break; 
} 
0

if声明中只需添加一个break;

if ((strpos($word_fb, "http://www.facebook") === 0) || (strpos($word_fb, "https://www.facebook") === 0)){ 
    echo $word_fb; 
    break; 
} 
2

您可以使用break;命令其停止电流回路:

$html = file_get_html('URL'); 
foreach($html->find('a') as $element) { 
    $word_fb = $element->href; 
    if ((strpos($word_fb, "http://www.facebook") === 0) || (strpos($word_fb, "https://www.facebook") === 0)){ 
    echo $word_fb; 
    break; 
    } 
} 
0

你可以做到这一点与break

foreach($html->find('a') as $element) { 
    $word_fb = $element->href; 
    if ((strpos($word_fb, "http://www.facebook") === 0) || (strpos($word_fb, "https://www.facebook") === 0)){ 
     echo $word_fb; 
     break; //exit 
    } 
}