Normal bir durumda içine tüm harflere girişini değiştirebilirsiniz

6 Cevap

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ı?

6 Cevap

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=". ";
}

Ben bunu otomatik yapacak herhangi bir yöntem bilmiyorum. Muhtemelen 'i' kendi içinde olduğu büyük harfle gerek mektubu gibi özel durumlarda alacağını kuralları ile kendi yazmak zorunda olurdu. Ayrıca hala insanlar ve yer isimleri gibi şeyler yararlanmak için yeteneği kaçırmış olur.

İş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:

http://codesnippets.joyent.com/posts/show/715

Mükemmel mümkün

$s = "THIS IS THE LINE I'M GOING TO WORK ON";

$s = ucfirst(strtolower($s));

echo $s; //This is the line I'm going to work on

Dize sadece 1 cümle varsa o zaman kullanabilirsiniz:

$string =  ucfirst(strtolower($string));

Akılda tutulması gereken nokta: Tüm giriş alanları için bu geçerli değil!

Eğer "Mike Df Kralı" içine "Mike DF Kralı" açarsanız adlarında ALL CAPS harfleri olan insanlar güçlü rahatsız alabilirsiniz

şerefe :)