【发布时间】:2011-10-31 09:59:13
【问题描述】:
我使用下面的代码在我的文本中的第一个搜索关键字之前和之后截断我的内容(这是我的搜索页面),除了在截断开头将单词切成两半的代码之外,一切正常,它不会在截断末尾截断单词。
例子:
lients at the centre of the relationship and to offer a first class service to them, which includes tax planning, investment management and estate planning. We believe that our customer focused and...
(编辑:有时单词中缺少一个以上的字符)
您会看到它已经从“clients”中删除了“c”。它只发生在文本的开头而不是结尾。我怎样才能解决这个问题?我相信我已经成功了一半。到目前为止的代码:
function neatest_trim($content, $chars, $searchquery,$characters_before,$characters_after) {
if (strlen($content) > $chars) {
$pos = strpos($content, $searchquery);
$start = $characters_before < $pos ? $pos - $characters_before : 0;
$len = $pos + strlen($searchquery) + $characters_after - $start;
$content = str_replace(' ', ' ', $content);
$content = str_replace("\n", '', $content);
$content = strip_tags(trim($content));
$content = preg_replace('/\s+?(\S+)?$/', '', mb_substr($content, $start, $len));
$content = trim($content) . '...';
$content = strip_tags($content);
$content = str_ireplace($searchquery, '<span class="highlight" style="background: #E6E6E6;">' . $searchquery . '</span>', $content);
}
return $content;
}
$results[] = Array(
'text' => neatest_trim($row->content,200,$searchquery,120,80)
);
【问题讨论】:
-
内容的开头总是只有一个字符吗?
-
并非总是如此。有时不止一个
-
我想我明白了,你基本上是在搜索关键字之前留下 120 个字符,在搜索关键字之后留下 80 个字符,是吗?
-
是的。我的问题是它在开头而不是结尾砍我的话。
标签: php preg-replace truncate str-replace