0

好吧,当我尝试将符号或字符之后的第一个字母大写并且实际上效果很好时,我遇到了问题,但是如果我的字符串在单词之间有空格,则代码会忽略大写并按原样打印,例如:

$string = "•TEXT";

$string = ucfirst(strtolower($string));

$string = preg_replace_callback('/[.!?].*?\w/', create_function('$matches', 'return strtoupper($matches[0]);'),$string);

$string = preg_replace('/^•([a-z])([a-z]+)$/e', '"•" . strtoupper("\\1") . "\2"', $string);

echo $string; //This print •Text 

上面的示例正确显示了文本,但没有空格。如果有像下一个代码这样的空格,它会以小写形式显示所有文本,例如:

$string = "•TEXT EXAMPLE";

$string = ucfirst(strtolower($string));

$string = preg_replace_callback('/[.!?].*?\w/', create_function('$matches', 'return strtoupper($matches[0]);'),$string);

$string = preg_replace('/^•([a-z])([a-z]+)$/e', '"•" . strtoupper("\\1") . "\2"', $string);

echo $string; //This print •text example (This is my problem, all is lowercased)

你能帮我解决这个问题吗?

4

1 回答 1

0

一个更简单的解决方案怎么样:

$str = '•TEXT EXAMPLE';
if (preg_match('/(^&[^;]+;)(.*)/', $str, $matches)) {
    list($discard, $entity, $text) = $matches;
    // list(, $entity, $text) = $matches; // this works too
    $string = $entity . trim(ucfirst(strtolower($text)));
    echo $string;
} else {
    # Match attempt failed
}
于 2013-06-27T23:07:03.797 回答