一尘不染

突出显示字符串中的单词(如果包含关键字)

php

如果包含关键字,该如何编写整个单词的脚本? 示例: 关键字“ fun”,字符串-鸟很有趣,结果-鸟很有趣*。我做以下

     $str = "my bird is funny";
     $keyword = "fun";
     $str = preg_replace("/($keyword)/i","<b>$1</b>",$str);

但它只是修饰词。我的鸟是 乐趣 纽约


阅读 329

收藏
2020-05-29

共1个答案

一尘不染

尝试这个:

preg_replace("/\w*?$keyword\w*/i", "<b>$0</b>", $str)

\w*?匹配关键字前面的任何单词字符(至少)和\w*关键字后面的任何单词字符。

并且我建议您使用preg_quote转义关键字:

preg_replace("/\w*?".preg_quote($keyword)."\w*/i", "<b>$0</b>", $str)

为了支持Unicode,请使用 u 标志,\p{L}而不要使用\w

preg_replace("/\p{L}*?".preg_quote($keyword)."\p{L}*/ui", "<b>$0</b>", $str)
2020-05-29