突出显示单词并提取其附近文本的功能

chi*_*iii 6 javascript php regex jquery

我有一个文本例如:

Etiam porta sem malesuada magna mollis euismod.Integer posuere erat an an an venenatis dapibus posuere velit aliquet.Etiam porta sem malesuada magna mollis euismod.Aenean eu leo quam.Pellentesque ornare sem lacinia quam venenatis vestibulum.Fusce dapibus,tellus ac cursus commodo,tortor mauris condimentum nibh,ut fermentum massa justo sit amet risus.

Nulla vitae elit libero,一个pharetra augue.Vestibulum id ligula porta felis euismod semper.Vestibulum id ligula porta felis euismod semper.Maecenas sed diam eget risus varius blandit sit amet non magna.Vestibulum id ligula porta felis euismod semper.Integer posuere erat an an an venenatis dapibus posuere velit aliquet.

Cras mattis consectetur purus 坐amet发酵.Etiam porta sem malesuada magna mollis euismod.Praesent commodo cursus magna,vel scelerisque nisl consectetur et.Maecenas faucibus mollis interdum.Nullam quis risus eget urna mollis ornare vel eu leo.

该文本显示为在我的网站上执行的搜索的描述,我希望能够突出显示一个单词/字符串并提取它旁边的文本.

我不确定是最好的方式将是PHP(可能是)或只是使用jquery功能.我知道如何突出jQuery中的单词,但不知道如何提取文本.

在这个例子中,我想显示为描述,因为我的搜索字符串是"consectetur purus"以下文本.

.... posuere velit aliquet.Cras mattis consectetur purus sit amet fermentum.Etiam porta ....

如你所见,我不仅会显示突出显示的单词,还会显示前后的一些文字.实现这一目标的最佳方法是什么?

我在我的网站上使用swish-e图书馆作为搜索引擎,我的cgi知识是空的,所以我更喜欢尝试php方式.

非常感谢您的帮助

mid*_*dus 5

在php中使用正则表达式(尽管如此,你可以在JavaScript中使用相同的表达式).

$regex = '/([A-Za-z0-9.,-]+\s*){0,5}\sconsectetur purus(\s|[,.!?])(\s*[A-Za-z0-9.,-]+){0,5}/';
preg_match($regex, $content, $matches);
echo $matches[0];
Run Code Online (Sandbox Code Playgroud)

这匹配使用字母数字字符构建的0-5个单词或.,-(微调这个)之一,然后是您要查找的单词(最后有或没有标点符号),然后是0-5个单词.这永远不会在中间打破一个单词,因为达到了一定量的字符.

输出:

posuere velit aliquet.

Cras mattis consectetur purus坐amet发酵.Etiam porta

现在你可以对此进行微调,例如删除\n,添加...,突出显示consectetur purus......