在搜索到的单词后显示一段文字

时间:2014-07-16 00:47:22

标签: php sql

当用户搜索某个单词并提交我的表单时我会做一个选择以显示我的新闻表的某些列,其中标题或内容就像搜索过的单词。

然后我有一个列表,我想显示一段包含搜索词的文本。

例如,如果用户搜索单词“title”,并且我在我的新闻表中有一个标题为“此标题目前无法购买”的记录。

我希望在搜索到的单词之后显示25个字符,在这种情况下:“标题当前不是”

你知道某种方式做这样的事吗?

$search = $url[1];
$read = $pdo->prepare("SELECT * FROM news WHERE status = ? AND (title LIKE ? OR content LIKE ?) ORDER BY date DESC"); 
$read->bindValue(1, '1');
$read->bindValue(2, "%$search%", PDO::PARAM_STR);
$read->bindValue(3, "%$search%", PDO::PARAM_STR);
$read->execute();

while($result = $read->fetch(PDO::FETCH_ASSOC)){
  echo '<a href="'.BASE.'/'.$result['link'].'">'.$result['title'].'</a>';
  //here I want to show a <span>.'$search'.</span> with my searched word more 25chars
}

1 个答案:

答案 0 :(得分:4)

PHP函数strpos将告诉您搜索在字符串中的位置。然后使用substr加上25个字符。

$searchPos = strpos($search, $title);
$searchLen = strlen($search);

$result = substr($title, $searchPos, $searchLen + 25);