【问题标题】:Replace all values except one [duplicate]替换除一个以外的所有值[重复]
【发布时间】:2014-11-29 20:23:46
【问题描述】:

我正在尝试替换除一个键值之外的所有数组值。我正在使用preg_replace 并拥有以下代码:

$posts = json_decode($post_list, true);
        foreach($posts as &$elm){
            $elm = array_map(function($i) use($s){
                return preg_replace("/(" . preg_quote($s) . ")/is", "<span style='background: #92CF18;'>$1</span>", $i);
            }, $elm);
        }

我的帖子 var 看起来像这样:pastebin 我不想改变“slug”键的值,我该怎么做?

【问题讨论】:

  • $s 的值是多少?显示您正在使用的实际正则表达式。
  • $s 是来自用户的输入 这是我的搜索结果系统。您正在寻找的彩色文本。这都是我已经拥有的。我被这个问题困住了。

标签: php json laravel-4 preg-replace


【解决方案1】:

我建议您不要使用标记修改您的 json 数据对象。数据与标记不同。

标记应该在呈现的输出上,所以你的步骤应该是结果标记上的 jQuery/javascript。

在 javascript 中,您应该检查“slug”并提前返回。在那之后,替换可能是微不足道的,或者至少比我之前的答案更容易:

如果我理解正确,您希望数组中的每条记录都有字典中的所有键,除了 slug 键。

我对它进行了一些调整,使用负前瞻,并得出了这个解决方案:

(\{|,)\"(?!slug).*?\"

您可以在以下位置查看: http://regex101.com/r/bU9bL4/1

如果这不能完全满足您的需求,请提供您想要的修改的更好描述,包括一些示例。

【讨论】:

  • 我想替换所有等于 $s var 的键。 $s 是搜索表单中的用户输入。你能告诉我应该如何改变我的陈述吗?
猜你喜欢
  • 1970-01-01
  • 2017-04-06
  • 1970-01-01
  • 2013-05-29
  • 2011-03-28
  • 2014-08-21
  • 1970-01-01
  • 1970-01-01
  • 2012-07-08
相关资源
最近更新 更多