foreach循环的第一个结果

时间:2013-07-08 13:31:50

标签: php

我正在使用以下代码从多个网站获取Facebook网址。有些网站包含多个指向Facebook的链接,但只想回应第一个找到的链接。

$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循环中仅回显第一个找到的结果的正确方法是什么?

4 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分: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;
  }
}

答案 2 :(得分:0)

只需在break;声明中添加if

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

答案 3 :(得分: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
    }
}
相关问题