PHP строка преобразования первого символа в верхнем и нижнем - PullRequest
2 голосов
/ 05 августа 2010

У меня есть два типа строк: 'hello', 'helloThere'.

Я хочу изменить их так, чтобы они выглядели так: 'Hello', 'Hello There' в зависимости от случая.

Что было бы хорошоспособ сделать это?

Спасибо

Ответы [ 7 ]

7 голосов
/ 05 августа 2010

Для преобразования CamelCase в другие слова:

preg_replace('/([^A-Z])([A-Z])/', "$1 $2", $string)

В верхнем регистре все слова первые буквы:

ucwords()

Итак, вместе:

ucwords(preg_replace('/([^A-Z])([A-Z])/', "$1 $2", $string))
5 голосов
/ 05 августа 2010

Используйте функцию ucwords:

Возвращает строку с первым характер каждого слова в стр с большой буквы, если этот символ алфавитный.

Определение слова - любая строка персонажей, которые сразу после пробела (это: пробел, подача, перевод строки, возврат каретки, горизонтальная вкладка и вертикальная вкладка).

Это не разделит слова, которые захлопнуты вместе - вам нужно будет добавить пробелы в строку по мере необходимости для работы этой функции.

4 голосов
/ 05 августа 2010

Используйте функцию ucwords:

echo ucwords('hello world');
1 голос
/ 27 ноября 2013

Чтобы убедиться, что он работает на других языках, неплохо было бы реализовать UTF-8. Я использую это доказательство воды для любых языков в моих установках WordPress.

$str = mb_ucfirst($str, 'UTF-8', true);

Это первая заглавная буква и все остальные строчные. Если для третьего аргумента установлено значение false (по умолчанию), остальная часть строки не обрабатывается. Однако кто-то здесь может предложить аргумент для повторного использования самой функции и mb прописными буквами каждого слова после первого, чтобы получить более точный ответ на вопрос.

// Extends PHP
if (!function_exists('mb_ucfirst')) {

function mb_ucfirst($str, $encoding = "UTF-8", $lower_str_end = false) {
    $first_letter = mb_strtoupper(mb_substr($str, 0, 1, $encoding), $encoding);
    $str_end = "";
    if ($lower_str_end) {
        $str_end = mb_strtolower(mb_substr($str, 1, mb_strlen($str, $encoding), $encoding), $encoding);
    } else {
        $str_end = mb_substr($str, 1, mb_strlen($str, $encoding), $encoding);
    }
    $str = $first_letter . $str_end;
    return $str;
}

}

/ Лундман

1 голос
/ 05 августа 2010

используйте ucwords

<?php
$foo = 'hello world';
$foo = ucwords($foo);             // Hello world

$bar = 'BONJOUR TOUT LE MONDE!';
$bar = ucwords($bar);             // HELLO WORLD
$bar = ucwords(strtolower($bar)); // Hello World
?>
1 голос
/ 05 августа 2010

вы можете использовать ucwords, как все говорили ... чтобы добавить пробел в helloThere, вы можете сделать $with_space = preg_replace('/[A-Z]/'," $0",$string); затем ucwords($with_space);

1 голос
/ 05 августа 2010

PHP имеет много функций для работы со строками.ucfirst() сделает это за вас.

http://ca3.php.net/manual/en/function.ucfirst.php

...