我遇到了小问题。我试图用句子替换单词,即
HELLO World WHAT
通过
Hello World What
到目前为止有办法检测它:
preg_replace('/(\b[A-Z][A-Z]+\b)/sm','$1', $string);
但它没有任何作用,因为我不能把它作为参数ucwords('$ 1')。
任何帮助都会很棒。
欢呼声, /马尔钦
P.S。 这种方法并不好:ucwords(strtolower($ string));因为我想留下所有不是全部大写的内容。
答案 0 :(得分:2)
如何使用:
ucwords(strtolower($string));
您可以将此方法与e
修饰符结合使用:
preg_replace('/(\b[A-Z][A-Z]+\b)/sme','ucwords(strtolower($1))', $string);
答案 1 :(得分:2)
使用匿名函数而不是调用/e
修饰符稍微有效一点。
$formatted = preg_replace_callback(
'/(\b[A-Z][A-Z]+\b)/',
create_function(
'$matches',
'return ucwords(strtolower($matches[0]));'
),
$string
);