2013-07-07 74 views
1

我使用php解析數據庫中的一些文章,並在文章中有我想覆蓋的鏈接。鏈接始終以「http://cdn.example.com/」開頭,結束語解析器爲htmlspecialchars_decode($item->parse_articles(), ENT_NOQUOTES)PHP:如何刪除/替換特定的href屬性值

所以物品被傳遞到HTML DOM之前,我想更換所有包含的HREF的(?)example.com或許即使速度更快,可以完全去除<a>

<a href="http://cdn.example.com/whatever?else" target="_blank"></a>

這怎麼可能?如果可能的話,被認爲是更快的選項比首先將它傳遞給DOM並在客戶端從那裏操縱它更好?

+0

至於速度,不應該有很大的區別,除非有大量的文字。您可能需要某種自定義正則表達式來檢測匹配的href標記。 'preg_match()'或'preg_replace()'可以做到這一點。身份證說,如果你在JS這麼做很舒服,那麼就這樣吧。 – foochow

回答

1

你可以嘗試像在PHP如下:

$newtext = preg_replace('/^("http:\/\/cdn\.example\.com\/){1}(.*)("){1}$/', '"#" class="disabled-link"', $oldtext); 

$ oldtext是你輸入的文章爲一個字符串。 $ newtext是在頁面上回顯的文本。

拆毀了

  1. 查找文本 「在http://cdn.example.com/
  2. 然後匹配任何
  3. 停止」
  4. 替換爲 「#」 類= 「禁用鏈接」
與開始

這應該讓你刪除鏈接,並且我添加了類部分,以便您可以添加一些CSS以將鏈接設置爲文本樣式。

實施例:

.disabled-link{ 
    color:#000; 
    pointer-events: none; 
    cursor: default; 
    text-decoration: none; 
} 

此將所有合併將爲用戶提供一個鏈接,是不看到DOM或源完全不可見。