小写除括号之间的所有内容

小写除括号之间的所有内容

本文介绍了小写除括号之间的所有内容的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

考虑以下字符串:

LoReM {FOO} IPSUM dolor {BAR} Samet {fooBar}

我正在寻找一种将所有内容小写的方法 - 除了 {brackets} 之间的内容应该被忽略.所以期望的输出是:

I'm looking for a way to lowercase everything - except what is between {brackets} should be ignored. So the desired output is:

lorem {FOO} ipsum dolor {BAR} samet {fooBar}

@stema 在另一个主题中指向 http://de2.php.net/manual/en/functions.anonymous.php 来实现这样的事情,但我不明白如何:

In another topic @stema pointed to http://de2.php.net/manual/en/functions.anonymous.php to achieve something like this, but I dont understand how:

echo preg_replace_callback('~\{.*?\}~', function ($match) {
  return strtolower($match[1]);
}, 'LoReM {FOO} IPSUM dolor {BAR} Samet {fooBar}');

这仅返回没有括号 {tags} 的字符串,甚至没有小写.谁能帮我解决这个问题?非常感谢任何帮助:)

This returns only the string without the bracketed {tags}, and not even lowercased. Who can help me solve this? Any help is greatly appreciated :)

推荐答案

将正则表达式更改为:

~(?:^|})(.*?)(?:\{|$)~

说明:

~           : delimiter
  (?:       : start non capture group
    ^|}     : begin of string or }
  )         : end of group
  (         : start capture group #1
    .*?     : any number of any char. non greedy
              (ie: all char outside of {})
  )         : end of group
  (?:       : start non capture group
    \{|$    : { or end of string
  )         : end of group
~           : delimiter

这篇关于小写除括号之间的所有内容的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-19 16:43