Cum transformi prima literă dintr-un text în majusculă: metode practice

Recent a trebuit să dezvolt un script care să identifice prima literă dintr-o propoziție și să o transforme în majusculă (format sentence case). Problema a apărut atunci când am constatat că mai multe descrieri dintr-o bază de date conțineau cuvinte scrise complet cu majuscule chiar în mijlocul propozițiilor, afectând aspectul general al textului.

Pentru a rezolva această problemă în PHP, ținând cont și de caracterele multibyte (cum ar fi diacriticele românești în UTF-8), soluția completă este prezentată mai jos:

function my_ucfirst(,  = 'utf-8') {
    if (function_exists('mb_strtoupper') && function_exists('mb_substr') && !empty()) {
         = mb_strtolower(, );
         = mb_strtoupper(, );
        preg_match('#(.)#us', , );
         =  . mb_substr(, 1, mb_strlen(, ), );
    } else {
         = ucfirst();
    }
    return ;
}

function sentence_case() {
     = preg_split('/([.?!]+)/', , -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE);
     = '';
    foreach ( as  => ) {
         .= ( & 1) == 0 ?
            my_ucfirst(strtolower(trim())) :
             . ' ';
    }
    return trim();
}

 = "acesta este scris ceva. inca o propozitie";
echo sentence_case(); // afișează corect textul

Funcția sentence_case separă șirul de caractere pe baza semnelor de punctuație (punct, semnul întrebării, semnul exclamării), trece fiecare propoziție prin funcția personalizată my_ucfirst și reconstruiește textul cu prima literă a fiecărei propoziții transformată în majusculă.

Lasă un comentariu