我在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
答案 0 :(得分:1)
在MySQL中,您可以使用LOCATE
(或INSTR
)和SUBSTRING
的组合:
SELECT SUBSTRING(col, LOCATE('jQuery', col) - 20, 40) AS snippet
FROM yourtable
这将从您的文字中选择一个40个字符的片段,在第一次出现'jQuery'
之前从20个字符开始。
但是,它往往很慢。值得研究的替代方案:
答案 1 :(得分:0)
您可以使用PHP函数strpos()。
答案 2 :(得分: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;
像老板一样。