1

我在 MySQL 中有一个用 PHP 处理的数据库。在这个数据库中,我有一列长文本。人们使用网站上的搜索工具搜索一些短语。它显示与此搜索匹配的项目。

现在,我的问题是如何获取包含他们搜索的短语的部分文本,以便他们可以查看是否是他们正在寻找的内容?

例如:

Text: "this is some long text (...) about problems with jQuery and other JavaScript frameworks (...) so check it out"

现在我想得到短语 jQuery 这个:

about problems with jQuery and other JavaScript frameworks

?

4

3 回答 3

1

在 MySQL 中,您可以使用LOCATE(or INSTR) 和的组合SUBSTRING

SELECT SUBSTRING(col, LOCATE('jQuery', col) - 20, 40) AS snippet
FROM yourtable

这将从您的文本中选择一个 40 个字符的片段,从第一次出现'jQuery'.

但是,它往往很慢。值得研究的替代方案:

  • 在 PHP 中使用类似的方法
  • 使用 MySQL 的全文搜索功能(不确定是否有帮助),或者可能是一个完全独立的全文搜索引擎,如 solr。
于 2013-08-10T13:29:09.407 回答
0

您可以使用 PHP 函数strpos()

于 2013-08-10T13:31:24.250 回答
0

您可以使用strpos()来查找您要查找的短语的第一次出现。然后向后做减法以获得小于第一次出现的数字。然后调用mb_strimwidth()。这是一个示例代码

我们将搜索单词“网站”。

//Your string
$string = "Stackoverflow is the best *website* there ever is and ever will be. I find so much information here. And its fun and interactive too";

// first occurence of the word '*website*' - how far backwards you want to print
$position=intval(strpos($string, '*website*'))-50;
$display_text=mb_strimwidth($string, $position, 300, '...<a href="link_here">more</a>'); 
//we will print 300 characters only for display.

echo $display_text;

像一个老板一样。

于 2016-12-29T08:05:49.640 回答