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