我正在使用以下代码从多个网站获取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循环中仅回显第一个找到的结果的正确方法是什么?
答案 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
}
}