多个str_replace的简短方法

时间:2014-04-29 13:07:29

标签: php

$a = 'hello_world.php';

我需要HELLO WORLD

$a = str_replace('.php', '', $a);
$a = str_replace('_', ' ', $a);
$a = strtoupper($a);

这有效但是 - 有更短的方法吗?

3 个答案:

答案 0 :(得分:4)

您可以在str_replace中使用数组作为参数:

$a = strtoupper(str_replace(array('.php', '_'), array('', ' '), $a));

答案 1 :(得分:3)

您可以将str_replace()与数组一起使用:

echo strtoupper(str_replace(['.php', '_'], ['', ' '], $a));

请注意,上述语句使用short array syntax,仅适用于PHP 5.4+。如果您使用的是较旧的PHP版本,则必须使用array(...)语法:

echo strtoupper(str_replace(array('.php', '_'), array('', ' '), $a));

如果事先未知文件扩展名,则可以使用preg_replace_callback()代替:

echo preg_replace_callback('/(\w+)\..*/i', function ($m) {
    return strtoupper(str_replace('_', ' ', $m[1]));
}, $a);

答案 2 :(得分:1)

尝试使用strtr函数并使用“而不是'(撇号)