【问题标题】:case insensitive highlighting in php without changing the word itselfphp中不区分大小写的突出显示而不改变单词本身
【发布时间】:2023-03-06 19:55:01
【问题描述】:

我一直在解决这个问题。 (我在这里搜索了答案。有一些,但不完全是我需要的,这就是我单独创建这个问题的原因。对不起,如果它是重复的)。

我有一句话:

“Lorem Ipsum 的段落有很多变体,但是 大多数人都遭受了某种形式的改变”。

我还有两个单词,以小写形式提供:

Word1:lorem

Word2: ipsum

我需要在句子$text 中搜索$word1$word2,突出显示给定句子中的这些词(将它们加粗),而不改变被替换词的大小写。

在我的例子中,我需要我的结果是:

"... Lorem Ipsum ...",但不是 "... lorem ipsum ...”。

类似地,例如,如果Word1 = "Lorem" 并且提供文本中的那个单词是小写的,我只想将文本中的那个小写单词加粗,而不是大写。

如果有任何帮助,我将不胜感激!

提前非常感谢!!!

【问题讨论】:

  • 我看不出大小写与突出显示有什么关系。你在做什么来加粗这个词?进行不区分大小写的搜索是一件简单的事情。
  • 您使用什么语言?为什么需要使用正则表达式?听起来你可以抓住你想要的单词并用没有正则表达式的粗体文本替换它们......大多数现代语言都有一个可以做到这一点的函数......
  • 感谢您的回复。我正在使用 PHP,我是新手。不知道如何使用正则表达式。 $text = "Lorem Ipsum 的段落有很多变体。"; $www1 = "lorem"; $www2 = "ipsum";如果我在做 $text = str_ireplace($www1, "".$www1."", $text);结果是“lorem Ipsum 的段落有很多变体。”。但是我希望它是“Lorem Ipsum 的段落有很多变体。”
  • 谢谢你们的cmets!

标签: regex case case-insensitive


【解决方案1】:

先使用ucfirst($str),然后进行字符串搜索并转换为粗体。

$word1 = ucfirst($word1);
$word2 = ucfirst($word2);

或者,您可以使用 stripos($sentence, $word) 使用不区分大小写的搜索来获取单词的位置,然后将内容从该位置转换为 $word 的长度,并附加粗体标签/样式标签

希望这就是你要找的。​​p>

【讨论】:

  • 感谢您的回复。我明白你在说什么。但是,如果在句子中这些词没有大写怎么办?在这种情况下,应用 ucfirst("Lorem") 后,我是否能够在文本中搜索“lorem”并将其设为粗体 lorem,而不是 Lorem
  • 或者,您可以使用 stripos($sentence, $word) 使用不区分大小写的搜索来获取单词的位置,然后将内容从该位置转换为带有粗体标签的 $word 的长度/style 附加标签
  • 非常感谢!它帮助了我!
猜你喜欢
  • 2011-02-14
  • 2013-08-16
  • 1970-01-01
  • 1970-01-01
  • 2018-02-28
  • 2015-06-11
  • 2013-10-04
  • 2015-08-30
  • 2014-05-29
相关资源
最近更新 更多