本文介绍了小写除括号之间的所有内容的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
考虑以下字符串:
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
这篇关于小写除括号之间的所有内容的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!