如何将字符转换为大写,除了php中any()中的字符串?

时间:2014-05-29 02:50:00

标签: php regex string char

我有一个这样的字符串:

abc(abc)(ABC)(abc)abc abc(abc)(ABC)(abc)abc

我想将其转换为

ABC(abc)(ABC)(abc)ABC ABC(abc)(ABC)(abc)ABC

可能会有像这样的角色

$str= a+b*(a+b)<sup>2</sup>+something.

1 个答案:

答案 0 :(得分:1)

你或许可以通过REGEXP来做到这一点但是如果有复合的括号可能会有问题...这样的事情会起作用:

$open = 0;
$text = "abc(abc)(ABC)(abc)abc abc(abc)(ABC)(abc)abc";

for ($i = 0; $i < strlen($text); $i++) {
    switch ($text[$i]) {
    case '(':
    case '<':
        $open++;
        break;
    case ')':
    case '>':
        $open--;
        break;
    default:
        if ($open === 0) {
            $text[$i] = strtoupper($text[$i]);
        }
    }
}

这假设您不希望将html标记设为大写,并且打开/关闭括号或尖括号不会出现不匹配。

如果&#34; $ str =&#34;可以是字符串的一部分,您可以将for循环更改为:

for ($i = strpos($text, '=') ?: 0; $i < strlen($text); $i++) {