Php 用ucword替换所有大写单词
我有点小问题。我试图替换句子中的单词,例如Php 用ucword替换所有大写单词,php,regex,preg-replace,Php,Regex,Preg Replace,我有点小问题。我试图替换句子中的单词,例如 HELLO World WHAT 借 到目前为止,我们有办法检测到它: preg_replace('/(\b[A-Z][A-Z]+\b)/sm','$1', $string); 但是它没有任何作用,因为我不能把它作为参数(“$1”) 任何帮助都会很好 干杯, /马辛 附言。 这种方法不好:ucwords(strtolower($string));因为我想保留所有不完整的大写字母。使用: ucwords(strtolower($string));
HELLO World WHAT
借
到目前为止,我们有办法检测到它:
preg_replace('/(\b[A-Z][A-Z]+\b)/sm','$1', $string);
但是它没有任何作用,因为我不能把它作为参数(“$1”)
任何帮助都会很好
干杯,
/马辛
附言。
这种方法不好:ucwords(strtolower($string));因为我想保留所有不完整的大写字母。使用:
ucwords(strtolower($string));
您可以将此方法与e
修饰符结合使用:
preg_replace('/(\b[A-Z][A-Z]+\b)/sme','ucwords(strtolower($1))', $string);
如何使用:
ucwords(strtolower($string));
您可以将此方法与e
修饰符结合使用:
preg_replace('/(\b[A-Z][A-Z]+\b)/sme','ucwords(strtolower($1))', $string);
使用匿名函数比调用
/e
修饰符稍微有效一些
$formatted = preg_replace_callback(
'/(\b[A-Z][A-Z]+\b)/',
create_function(
'$matches',
'return ucwords(strtolower($matches[0]));'
),
$string
);
使用匿名函数比调用
/e
修饰符稍微有效一些
$formatted = preg_replace_callback(
'/(\b[A-Z][A-Z]+\b)/',
create_function(
'$matches',
'return ucwords(strtolower($matches[0]));'
),
$string
);
这不是所有大写字母都应该保留的方式,但是感谢使用regexp的修改-现在应该只在所有大写字母上工作。但是,您没有在那行代码中使用
/e
修饰符?这不是所有大写字母都应该保留的方式,但是感谢修改为使用regexp-现在应该只在所有的caps上工作。但是,你没有在那行代码中使用/e
修饰符吗?替换字符串基本上在每次替换时都会被传递到PHP中,而回调方法只需要传递一次。很好,我已经发布了另一个regex问题,你也可以帮忙吗:-谢谢你需要小心使用create函数,但是,如果你有很多行要处理,它可能会超出允许的内存,因此对于大数据集来说并不好,尽管效率很高,替换字符串基本上是为每次替换传递到PHP中,与只需要传递一次的回调方法不同。很好,我已经发布了其他正则表达式问题,您也能帮忙吗:-谢谢您需要小心创建函数,但是,如果您有很多行要处理,它可能会超出允许的内存,因此尽管效率很高,但对大数据集来说并不好