【问题标题】:Highlight keyword on search results php在搜索结果 php 中突出显示关键字
【发布时间】:2014-07-12 05:32:55
【问题描述】:

当用户键入当前关键字时,我试图将任何关键字加粗。

我有这段代码,它工作正常。

for($k=$no_words; $k>0 ;$k--) {

            $w=trim($search_array[$k-1]);
            if($w!='')
            {
                $result[$i]['title'] = preg_replace('/(' . preg_quote($search_array[$k-1], '/') . ')/siU', '<b>\\1</b>', $result[$i]['title']);
                $result[$i]['description'] = preg_replace('/(' . preg_quote($search_array[$k-1], '/') . ')/siU', '<b>\\1</b>', $result[$i]['description']);
            }
        }

我的问题如下:

我有这个关键字:这是我的关键字

当我输入:“这是我的关键字”时,我会得到这样的结果:“这是我的关键字

但是当我输入:“这是关键字”时,我得到的结果是:“这是我的关键字”,结果中的单词没有加粗。

我做错了什么?

【问题讨论】:

  • 字符串“这是我的关键字”中没有子字符串“这是关键字”
  • 我需要在这段代码中做什么?
  • $search_array 中有什么内容?
  • $search_array = explode('%20', $search); $no_words = count($search_array);
  • $search 中有什么内容?

标签: php highlight


【解决方案1】:

我想你需要以下内容:

$search_array = array_unique(explode(' ', $search));
foreach ($search_array as $k => $v)
{
    $w = trim($v);
    if ($w)
    {
        $result[$i]['title'] = preg_replace('/(' . preg_quote($w, '/') . ')/siU', '<b>\\1</b>', $result[$i]['title']);
        $result[$i]['description'] = preg_replace('/(' . preg_quote($w, '/') . ')/siU', '<b>\\1</b>', $result[$i]['description']);
    }
}

【讨论】:

  • Lashane 如果我输入这是我的关键字,带有空格,它不会得到任何结果你现在如何解决这个问题?
  • my__keyword 中有两个空格
  • @user3673602 不,我看不到墙
  • 可以把我的代码发给你吗?我想告诉你一些好消息
  • @user3673602 刚刚阅读了本网站的规则,然后用适当的示例/描述发布另一个问题
猜你喜欢
  • 2014-03-07
  • 2012-02-16
  • 2010-09-16
  • 2016-06-16
  • 2013-08-13
  • 2023-03-22
  • 2010-12-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多