2011-02-23 83 views
3

我正在循環訪問一個文本字符串(在php中),將數據庫中的某些關鍵字變爲鏈接。問題是,當對方如內存在於數據庫中的話:正則表達式來查找字母后面沒有的單詞

開發,開發人員,開發...

我結束了:

"Random string with the word <a href="developer"><a href="develop">develop</a>er</a> in it" 

我需要這只是包裝各地開發商,而不是一個標籤發展中它 ...

這裏是我當前的功能:

function hyper($haystack){ 
    $query = "SELECT * FROM `hyperwords` "; 
    $query .= "WHERE `active` = '1' "; 
    $query .= "ORDER BY LENGTH(hyperword) DESC "; 
    $result = mysql_query($query); 
    while($row = mysql_fetch_array($result)){ 
     $needle = $row['hyperword']; 
     $link = $row['link']; 
     $haystack = preg_replace("/($needle)/iu", "<a class='meta' href='$link'>$1</a>", $haystack); 
    } 
    return $haystack; 
} 

在此先感謝!

+0

這超出如果他們之後是怎麼樣的情況下信檢查,其中一個字是另一個字內...例如另一個而不是。它是否需要部分詞彙?或者它只應該鏈接完整的單詞。 – Jacob 2011-02-23 02:40:40

+0

@Jacob - 客戶沒有指定,我只是假設全文。但是非常好的一點。 – RANGER 2011-02-23 02:51:15

回答

1
$altered = preg_replace("/\b($needle)\b/iu", "<a class='meta' href='$link'>$1</a>", $altered); 

是你所需要的:)

元字符\ b就像 插入符號和美元符號的錨。它與 「字邊界」的位置匹配。這場比賽是零長度的 。

看到here以獲取更多信息:)

+0

很好,謝謝,我不知道\ b – Jacob 2011-02-23 02:42:23

相關問題