我使用get_meta_tags()在腳本和某些網址,它失敗了與(作爲一個例子)...錯誤處理get_meta_tags()和重定向限制?
警告:get_meta_tags(http://www.kodak.com/) function.get-meta-tags]:未能打開流:已達到重定向限制...
是否可以跳過導致錯誤的結果?還是應該使用@get_meta_tags()來代替?
function getMeta()
{
$tags = get_meta_tags($this->link); //INSERT INTEGRITY CHECK HERE?
$keywords = $tags['keywords'];
if(count($keywords))
{
preg_match_all('/(?<=^|,)\s*((?:[^\s,]+\s*){1,4})(?=\s*(?:,|$))/', $keywords, $m);
$this->keywords = array_slice($m[1], 0, 15);
}
}
的鏈接從谷歌搜索的屏幕抓取來爲給定的搜索查詢。雖然我不認爲它是一個典型問題,但它的鏈接完美無缺並且格式良好(www.kodak.com),不是嗎? – RegEdit
@RegEdit - 我所說的「規範鏈接」是指「重定向鏈末尾的鏈接」。如果您訪問kodak.com,它可能會檢測到您的位置並重定向到本地化網站,然後可能會將其重定向到其他網站。規範鏈接是您在瀏覽最終頁面時最終在瀏覽器中顯示的URL。基本上,我告訴你要儘可能地限制重定向,阻止重定向限制的到達,這樣就不會拋出錯誤。如果你不能這樣做,那麼你的下一個最好的選擇就是默默地忽略這個錯誤。 – AgentConundrum
@RegEdit - 如果你通過屏幕抓取拉取URL,你很難做重定向,因此可能需要使用'@'。唯一的其他選擇是通過set_error_handler()將錯誤轉換爲異常,然後在try-catch塊中運行get_meta_tags()調用,並檢查catch以確定是否「已經達到了重定向限制。這與使用錯誤抑制運算符幾乎相同,但僅用於抑制要抑制的錯誤的額外優點。儘管如此,這很可能過火了。 – AgentConundrum