由于误解,我已经重新格式化了这个问题,这对我和问题产生了不适感,不是故意的,对此我表示歉意。

我有一个单词数组,用于突出显示字符串中的单词,但是某些单词可能会作为短语的一部分出现,因此我希望该短语在突出显示部分中占上风:

例如:

// Array
   $seo = array("apple, apple tree, orchard");

// String 
   $description = "In my orchard I have a large Apple Tree";

// Desired effect: 
   In my <strong>orchard</strong> I have a large <strong>Apple Tree</strong>

在我自己的第一次尝试中,我遍历数组,对字符串运行preg_replace,但是我得到了像这样的嵌套突出显示<strong><strong>Apple</strong> Tree</strong>

在此先感谢您的协助

斯图

===============>>#1 票数:1

首先,您不应该使用循环来单独替换每个单词,而应使用正则表达式替代列表(foo|bar|thingy)

  $rx_words = implode("|", array_map("preg_quote", $words));
  $text = preg_replace("/\b($rx_words)\b/i", 

(实际上,preg_quote错过了第二个参数,但是只要您在关键字中没有正斜杠,它就会起作用。)

然后,您还可以通过断言使其更安全:

  $text = preg_replace("/(?<!<strong>)\b($rx_words)\b/i",

因此它将忽略已经包装的单词。 这只是一个解决方法,但通常就足够了。

  ask by Stuart translate from so

未解决问题?本站智能推荐:

1回复

PHP:preg_replace仅数组中的第一个匹配字符串

我从PHP中的preg_replace开始,我想知道如何只将第一个匹配的数组键替换为指定的数组值,因为我将preg_replace的changes参数设置为'1',并且无论如何它都更改了多次。 我也将字符串拆分为单个单词,并且正在逐一检查它们: 我希望这是输出: 嘿,太可怕了
1回复

Preg_Replace(删除)完全匹配的单词数组PHP

我将一组停用词设置为一个数组 在我尝试避免切断字符串并且只想从我的停用词列表中替换整个匹配项(为NULL值)之后,您可能已经注意到空格了。 意识到str_replace可能仅次于功能和优点,因此我转向构建preg_replace数组,以尝试使用单词边界对整个单词进行正则表达式。
1回复

从数组元素中删除/过滤字符和/或单词

我正在尝试从数组的“位置”部分中删除/过滤流浪字符/单词。 到目前为止,不管我做什么,这样做都会输出不需要的字符。 我要摆脱的字符:pic \\ u00a0map 码: 输出: 请告知如何删除/过滤/替换数组元素内的字符和/或单词。
3回复

数组中的字符串替换

这是我对验证消息的回复 我的代码在哪里 我想删除所有[和]因此我的回复应为 我尝试过 我正进入(状态 我什至尝试 我该怎么做才能只删除[和]和[这样我的输出应该是
1回复

PHP使用preg_replace突出显示单词中的字符串

因此,我有以下代码突出显示了在搜索结果中输入到搜索栏中的单词: 现在大多数情况下都可以使用。 可以说,我在搜索栏中输入了搜索方式“如何”,单词“如何”被突出显示。 现在,如果单词how在另一个单词内,例如淋浴,我想强调一下: 任何人都知道我如何调整代码来做到这一点。 干
2回复

用preg_replace中的数组替换字符串

我有一个要过滤的字符串。 我想找到一些要用preg_replace替换的单词。 我的参数是我想从字符串中取出的单词数组,而我的替换内容只是一个空白。 有人可以帮我解决这个问题。 我的代码:
1回复

从字符串中提取数字,将其保存到数组中,然后将其放回字符串中

我一直在使用stackoverflow来学习有关PHP和JS(包括jquery)的很多知识,因此我一直都在使用google,但是我没有找到确切的答案 我有很多字符串,单词混合有数字,例如: “来自12个人的20条评论,占20%的用户” 这是一个示例,但是可能要复杂得多(“ wo
2回复

更新字符串并保留数组中的旧数据

我很好奇,是否有可能使这段代码变得更短,甚至更快? 下面这段代码的目标是通过为找到的每个数字使用有序替换(例如,{#0},{#1}等)更改(并保留)其中的数字来更新字符串。 另外,将找到的数字分开保存在数组中,以便我们可以随时恢复信息。 下面的代码可以工作,但是我相信它可能会得到重
2回复

在数组中的每个字符串前添加美元符号?

我有这个字符串: $str = "(he+is+genius*2)/clever"; 在数组中看起来像这样; 我想做的是将美元符号$放在$str出现的每个字符串之前,但忽略非字母数字和数字。 最后,我想要一个看起来像这样的东西;
5回复

如何使用preg_replace用数组中的字符串替换子字符串? (PHP)

我有一个包含这些值的数据数组: 此字符串包含引用数据数组索引的数字: 是否可以将括号中的数字(包括括号)更改为数组中的适当值? 我知道如何使用(string) preg_replace( (array) $patterns, (array) $replacements, (