经过一些搜索和谷歌搜索后,我发现了用于在文本中突出显示和限制搜索结果的代码,类似于下面的代码:
$text = preg_replace("/^.*?(.{0,100})\b($word)\b(.{0,100}).*?$/mi", '\1<span class="highlight_word">\2</span>\3', $text);不幸的是,即使$word的内容按预期放置在跨度内,我也总是得到完整的$text。
我现在的问题是如何减少$text的内容,使其在搜索结果($word的内容)前后只显示100个字符。我还使用webportal检查了几个变体中的正则表达式,并获得了所需的结果。尽管如此,我的php代码并没有显示出预期的效果。任何帮助都是非常感谢的,因为我假设我这方面有一个非常愚蠢的错误。
发布于 2017-04-27 04:32:31
使用m标志时,^和$匹配行的开头和结尾,而不是字符串的开头和结尾。因此,这一次只在$text的一行中进行匹配和替换,而不匹配的行将被保留。
如果要在多行之间进行匹配,请使用s修饰符。这允许.匹配换行符,但是^和$仍然只匹配$text的开头和结尾。
https://stackoverflow.com/questions/43643431
复制相似问题