php
  • regex
  • 2011-05-14 90 views 0 likes 
    0

    我有一個特殊情況,我正在進行短語替換,我需要保留單詞邊界並省略在標題標記內發生的任何操作(<h1><h2><h3><h4><h5> )。正則表達式幫助 - 單詞邊界&排除標題標籤內容

    以下是我到目前爲止的內容,並且它是在忽略短語(如果它們落在「a」或「 - 」之後),這會阻止URLS和超鏈接被編輯。

    preg_replace("/[^\>\.-]\b{$keywords}\b/i"," <a href='$url' target='$target'>$keywords</a> 
    

    所以,正則表達式需要:

    1. 榮譽字邊界
    2. 忽略標題標籤中的短語和超鏈接。
    3. 對待 - (破折號)作爲一個邊界,這似乎並不這樣做。

    有沒有建議嗎?

    回答

    0

    我發現一個帶有前瞻性標題標籤的解決方案。

    /(?<!_)(?<!-)\b$keywords[$key]\b(?!(.*?)\<\/h\d>)/i 
    

    我試圖找到alt和title標籤中的文本使用後面的功能,但沒有打破正則表達式的解決方案。似乎每次我在後視中使用了一個。+或者一個(。*?),它都會破壞它。

    1

    建議:

    • 意識到,如果你正在嘗試處理任意HTML代碼和網址,你的標準是簡單的和一些特殊情況下咬你的一天。
    • 如果您知道您的關鍵字是字母,那麼您確實不需要這樣的\b;請在關鍵字前後嘗試一些[^-a-zA-Z\/>]的變體。 (我假設你的意思是避免使用斜槓來防止網址 - 我認爲它是下劃線(_\b沒有看到邊界,因爲它們算作字母數字;在字符類中使用\w會帶來同樣的問題)。
    相關問題