0

我正在使用以下代码从多个网站获取 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

4 回答 4

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;
}
于 2013-07-08T13:36:10.740 回答
2

您可以使用中断;停止当前循环的命令:

$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;
  }
}
于 2013-07-08T13:35:06.080 回答
0

只需break;在您的if声明中添加一个:

if ( (strpos($word_fb, "http://www.facebook") === 0) || (strpos($word_fb, "https://www.facebook") === 0) ){
    echo $word_fb;
    break;
}
于 2013-07-08T13:34:52.557 回答
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
    }
}
于 2013-07-08T13:40:11.270 回答