Строка PHP преобразует первый символ в верхний/нижний регистр

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

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

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

Спасибо


person Frank    schedule 05.08.2010    source источник
comment
Я полагаю, у вас есть словарь для определения того, где составные слова будут разделяться?!   -  person bcosca    schedule 05.08.2010


Ответы (7)


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

person Ties    schedule 05.08.2010

Чтобы преобразовать CamelCase в другие слова:

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

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

ucwords()

Итак вместе:

ucwords(preg_replace('/([^A-Z])([A-Z])/', "$1 $2", $string))
person JochenJung    schedule 05.08.2010

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

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

Определение слова — это любая строка символов, которая находится сразу после пробела (это: пробел, перевод страницы, новая строка, возврат каретки, горизонтальная табуляция и вертикальная табуляция).

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

person Andrew Hare    schedule 05.08.2010
comment
ему нужно сначала добавить пробел с помощью helloThere - person Ties; 05.08.2010

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

echo ucwords('hello world');
person Sarfraz    schedule 05.08.2010

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

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

person Angelo R.    schedule 05.08.2010
comment
Нет, эта функция не может изменить CamelCase на Camel Case. - person JochenJung; 05.08.2010

использовать укворды

<?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
?>
person Marouane Gazanayi    schedule 05.08.2010

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

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

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

// 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;
}

}

/ Лундман

person Jonas Lundman    schedule 27.11.2013