2012-06-22 127 views
2

可能重複:
Grabbing the href attribute of an A element
Parse All Links That Contain A Specific Word In "href" Tag 添加到_blank所有外部鏈接

我使用下面的函數來_blank添加到我的網站上所有的鏈接。

function targetBlank($text) { 
    $return = str_replace('<a', '<a target="_blank"', $text); 
    return $return; 
} 

我正在尋找一個解決方案,只適用於外部鏈接(而不是我的域名)而不是所有鏈接。

+2

這會失敗的標籤像'「,」「,」
「和任何其他以'a' 。 – meagar

+0

如果您想修復上述,錯誤,請執行以下操作:'return str_replace(' Riki137

回答

5

下面是一個嘗試的解決方案,它依賴於$_SERVER['HTTP_HOST']

function targetBlank($text) { 
    if(strpos($text, $_SERVER['HTTP_HOST']) === false) 
     return str_replace('<a', '<a target="_blank"', $text); 
    return $text; 
} 

未經檢驗的,但它應該工作。 @meager也是正確的,因爲如果該標籤已經定義了一個目標,將會產生格式不正確的錨標籤,但是,因爲它只會對傳入的html字符串進行操作,所以只要您只需要,<abbr>等都應該是安全的傳遞帶錨標籤的字符串。

+0

如果已經存在目標屬性?一個正則表達式不會更好嗎? – transilvlad

+0

@tntu正確,我在回答(〜6個月前)中指出。 –

相關問題