Normal durumlarda bütün harflere php bir dize değiştirmek istiyorum. Her cümle bir harf ile başlamak istiyorum ve geri kalan alt durumda olurdu böylece.
Bunu yapmak için basit bir yolu var mı?
Basit bir yolu strtolower dize küçük harf yapmak için kullanabilirsiniz, ve ucfirst olarak ilk karakter izler üst durumda olduğunu:
$str=ucfirst(strtolower($str));
Dizesi birden cümleler varsa, kendi algoritması, örneğin yazmak gerekecek cümle ayırıcılar üzerinde patlayabilir ve sırayla her cümleyi işlemek. Yanı sıra ilk karakter olarak, siz "ben" gibi kelimeler ve metninde herhangi bir ortak doğru isimler için bazı sezgisellerin gerekebilir. Örneğin, böyle bir şey:
$sentences=explode('.', strtolower($str));
$str="";
$sep="";
foreach ($sentences as $sentence)
{
//upper case first char
$sentence=ucfirst(trim($sentence));
//now we do more heuristics, like turn i and i'm into I and I'm
$sentence=preg_replace('/i([\s\'])/', 'I$1', $sentence);
//append sentence to output
$str=$sep.$str;
$sep=". ";
}
İşte bunu yapacak bir fonksiyon:
function sentence_case($s) {
$str = strtolower($s);
$cap = true;
for($x = 0; $x < strlen($str); $x++){
$letter = substr($str, $x, 1);
if($letter == "." || $letter == "!" || $letter == "?"){
$cap = true;
}elseif($letter != " " && $cap == true){
$letter = strtoupper($letter);
$cap = false;
}
$ret .= $letter;
}
return $ret;
}
Source: