2010-10-19 41 views
0

顯示文本的問題,我發現對計算器這段代碼在Best practices on displaying search results with associated text snippets from actual resultPHP - 大約有搜索詞

但是它並不完全做到我想要什麼。它顯示給定搜索字詞周圍的文字,但有兩個問題

1)我想要整個字只有; 2)它不會限制字符搜索字詞,只有之前的那些

下面是代碼如下。我如何編輯它來解決這兩個問題?在此先感謝:

$text = 'This is an example text page with content. It could be red, green or blue or some other random color. It dont really matter.'; 
$keyword = 'red'; 
$size = 15; // size of snippet either side of keyword 
$snippet = '...'.substr($text, strpos($text, $keyword) - $size, strpos($text, $keyword) + sizeof($keyword) + $size).'...'; 
$snippet = str_replace($keyword, '<strong>'.$keyword.'</strong>', $snippet); 
echo $snippet; 

回答

1
$snippet = preg_replace(
    '/^.*?\s(.{0,'.$size.'})(\b'.$keyword.'\b)(.{0,'.$size.'})\s.*?$/', 
    '...$1<strong>$2</strong>$3...', 
    $text 
); 

這將產生:...It could be <strong>red</strong>, green or blue...。這是\s字符類,它們將之後的15個字符限制爲出現的單詞分隔符。

+0

感謝您的優雅解決方案 – Steven 2010-10-19 20:40:37