Recent a trebuit sa fac un script care trebuie sa descopere prima litera dintr-o propozitie si sa o faca mare. Problema a intervenit atunci cand am descoperit ca mai multe descrieri dintr-o baza de date avea cuvinte cu caractere mari in mijlocul propozitie.
Solutia e mai jos:
[php]
function my_ucfirst($string, $e =’utf-8′) {
if (function_exists(‘mb_strtoupper’) && function_exists(‘mb_substr’) && !empty($string)) {
$string = mb_strtolower($string, $e);
$upper = mb_strtoupper($string, $e);
preg_match(‘#(.)#us’, $upper, $matches);
$string = $matches[1] . mb_substr($string, 1, mb_strlen($string, $e), $e);
}
else {
$string = ucfirst($string);
}
return $string;
}
function sentence_case($string) {
$sentences = preg_split(‘/([.?!]+)/’, $string, -1, PREG_SPLIT_NO_EMPTY|PREG_SPLIT_DELIM_CAPTURE);
$new_string = ”;
foreach ($sentences as $key => $sentence) {
$new_string .= ($key & 1) == 0?
my_ucfirst(strtolower(trim($sentence))) :
$sentence.’ ‘;
}
return trim($new_string);
}
$descriere ="acesta este scris ceva. inca o propozitie";
echo sentence_case($descriere); // afiseaza corect datele.
[/php]