如何使我的函数使用我的if语句更改我的数组

时间:2012-09-25 16:56:02

标签: php

在下面的脚本中我有一个数组。我的数组存储了网页中的所有链接,标题和描述。但是我想确保如果没有描述,它将使用一个有效的函数使用p标签的前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);

2 个答案:

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

答案 1 :(得分: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]);
}
BTW,使用正则表达式解析HTML非常脆弱,使用DOM解析器库会更好。