2

在下面的脚本中,我有一个数组。我的数组存储来自网页的所有链接、标题和描述。但我想确保如果没有描述,它将使用 ap 标签的前 20 个字符,使用一个有效的功能。唯一的问题是我有拼图,似乎无法将它们放在一起,所以我希望我的 if 语句显示,如果描述为空,则使用函数 getWord 而不是getMetas().

function getMetas($link) {
  $str1 = file_get_contents($link);    
  if (strlen($str1)>0) {
    preg_match_all( '/<meta.*?name=("|\')description("|\').*?content=("|\')(.*?)("|\')/i', $str1, $description);
    if (count($description) > 1) {
      return $description[4];   
    }
  }
}

然后我的函数在这里(get_custom_excert),但没有必要看到它,因为我知道它有效。

function getWord() {
  $html = file_get_contents($link);    
  preg_match('%(<p[^>]*>.*?</p>)%i', $html, $re);
  $res = get_custom_excerpt($re[1]);
}

$outputs = array();

foreach ($links as $thisLink) {
  $output[] = array("link" => $thisLink, "title" => Titles($thisLink), "description" => getMetas($thisLink));

  if ($output['description'] == null) {
  $output['description'] = getWord($res);
  }

  $outputs[] = $output;
}

print_r($output);
4

2 回答 2

0

这是你想要的吗?

function getMetas($link) {
  $str1 = file_get_contents($link);    
  if (strlen($str1)>0) {
    preg_match_all( '/<meta.*?name=("|\')description("|\').*?content=("|\')(.*?)("|\')/i', $str1, $description);
    if (count($description) > 1) {
      return $description[4];   
    } else {
      return getWord($str1);
    }
  }
}

function getWord($html) {
  preg_match('%(<p[^>]*>.*?</p>)%i', $html, $re);
  return get_custom_excerpt($re[1]);
}

顺便说一句,用正则表达式解析 HTML 非常脆弱,最好使用 DOM 解析器库。

于 2012-09-25T17:44:55.960 回答
0

这怎么样?

foreach ($links as $thisLink) {
  $output = array("link" => $thisLink, "title" => Titles($thisLink), "description" => getMetas($thisLink));

  if ($output['description'] == null) {
  $output['description'] = getWord($res);
  }

  $outputs[] = $output;
}
于 2012-09-25T17:02:54.203 回答