正则表达式找到没有字母的单词

时间:2011-02-23 02:36:02

标签: php regex

我循环遍历文本字符串(在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;
}

提前致谢!!!

1 个答案:

答案 0 :(得分:1)

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

是你需要的:)

  

元字符 \ b 是一个锚点   插入符号和美元符号。它   匹配在一个叫做a的位置   “字边界”。这场比赛是   零长度。

有关详细信息,请参阅here:)