2011-02-23 79 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

相关问题