Penggunaan fungsi TOLOWER pada PHP

Semua, Saya mencoba memasukkan nama belakang ke dalam basis data. Saya ingin huruf pertama ditulis dengan huruf besar untuk nama dan jika mereka menggunakan dua nama belakang maka huruf besar nama pertama dan kedua Jadi misalnya jika seseorang masuk:

nama gadis menikah

Ini akan mengonversi ini menjadi Marriedname Maidenname dan seterusnya jika ada lebih dari dua nama. Skenario lainnya adalah seseorang memiliki tanda kutip atas namanya, jadi apakah ada cara untuk melakukannya jika seseorang masuk:

o'Connell

Ini perlu dikonversi ke O'Connell. Saya menggunakan:

ucfirst(strtolower($last_name));

Namun, seperti yang Anda tahu itu tidak akan berhasil untuk semua skenario. Terima kasih atas sarannya! 

Ini akan menggunakan huruf kapital semua huruf pertama Word, dan huruf segera setelah tanda kutip. Itu akan membuat semua huruf lainnya huruf kecil. Ini seharusnya bekerja untuk Anda:

str_replace('\' ', '\'', ucwords(str_replace('\'', '\' ', strtolower($last_name))));

anda dapat mencoba ini untuk Word 

<?php echo ucwords(strtolower('Dhaka, JAMALPUR, sarishabari')) ?>

hasilnya adalah: Dhaka, Jamalpur, Sarishabari

Tidak satu pun dari ini yang ramah UTF8, jadi inilah yang berfungsi sempurna (sejauh ini)

function titleCase($string, $delimiters = array(" ", "-", ".", "'", "O'", "Mc"), $exceptions = array("and", "to", "of", "das", "dos", "I", "II", "III", "IV", "V", "VI"))
{
    /*
     * Exceptions in lower case are words you don't want converted
     * Exceptions all in upper case are any words you don't want converted to title case
     *   but should be converted to upper case, e.g.:
     *   king henry viii or king henry Viii should be King Henry VIII
     */
    $string = mb_convert_case($string, MB_CASE_TITLE, "UTF-8");
    foreach ($delimiters as $dlnr => $delimiter) {
        $words = explode($delimiter, $string);
        $newwords = array();
        foreach ($words as $wordnr => $Word) {
            if (in_array(mb_strtoupper($Word, "UTF-8"), $exceptions)) {
                // check exceptions list for any words that should be in upper case
                $Word = mb_strtoupper($Word, "UTF-8");
            } elseif (in_array(mb_strtolower($Word, "UTF-8"), $exceptions)) {
                // check exceptions list for any words that should be in upper case
                $Word = mb_strtolower($Word, "UTF-8");
            } elseif (!in_array($Word, $exceptions)) {
                // convert to uppercase (non-utf8 only)
                $Word = ucfirst($Word);
            }
            array_Push($newwords, $Word);
        }
        $string = join($delimiter, $newwords);
   }//foreach
   return $string;
}

Pemakaian:

$s = 'SÃO JOÃO DOS SANTOS';
$v = titleCase($s); // 'São João dos Santos' 

Gunakan fungsi bawaan ini:

ucwords('string');

Saya tidak percaya akan ada satu jawaban bagus yang mencakup semua skenario untuk Anda. Forum PHP.net untuk ucwords memiliki cukup banyak diskusi tetapi sepertinya tidak ada jawaban untuk semua. Saya akan merekomendasikan Anda untuk standarisasi menggunakan huruf besar atau membiarkan input pengguna sendiri.

Anda dapat menggunakan preg_replace dengan flag e (menjalankan fungsi php):

function processReplacement($one, $two)
{
  return $one . strtoupper($two);
}

$name = "bob o'conner";
$name = preg_replace("/(^|[^a-zA-Z])([a-z])/e","processReplacement('$1', '$2')", $name);

var_dump($name); // output "Bob O'Conner"

Mungkin pola regex dapat ditingkatkan, tetapi yang saya lakukan adalah:

  • $1 adalah awal dari baris atau karakter non-alfabet.
  • $2 adalah karakter alfabet huruf kecil apa pun

Kami kemudian mengganti keduanya dengan hasil fungsi processReplacement() sederhana.

Jika Anda memiliki PHP 5.3, mungkin layak menjadikan processReplacement() sebagai fungsi anonim.

Ini sedikit lebih sederhana dan lebih langsung menjawab pertanyaan utama. fungsi di bawah ini meniru pendekatan PHP. Untuk jaga-jaga jika PHP memperpanjang ini dengan ruang nama mereka di masa depan, tes pertama kali diperiksa. Saya menggunakan bukti air ini untuk bahasa apa pun di instalasi wordpress saya.

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

Ini membuat huruf besar pertama dan semua huruf kecil lainnya seperti Q. Jika arg ketiga disetel ke false (default), sisa string tidak dimanipulasi.

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

}

/ Lundman

gunakan seperti ini ucfirst(strtolower($var));

Anda dapat menggunakan fungsi strtolower dan ucwords di PHP.

Pertama: turunkan semua teks yang dimasukkan menggunakan strtolower('inputtedtext') then capitalise all text usingucwords ('strtolower') `.

Sampel: 

$text = 'tHis iS sOme tEXt'; <br>
$lower = strtolower($text); &ensp; //this will lower all letter from the text <br>
$upper = ucwords($lower); &ensp; //this will uppercase all first letter from the text <br>

echo $upper;

Hasil = Ini Ada Beberapa Teks

Anda dapat menggunakan satu kode baris untuk ini dengan ucwords(strtolower($text));

Konversi pertama ke case judul, kemudian cari tanda kutip pertama dan huruf besar karakter NEXT. Anda perlu menambahkan banyak cek, untuk memastikan bahwa ada char setelah tanda kutip, dan kode ini hanya akan bekerja pada satu tanda kutip. misalnya "Mary O'Callahan O'connell". 

$str = mb_convert_case($str, MB_CASE_TITLE, "UTF-8");
$pos = strpos($str, "'");
if ($pos != FALSE)
{
     $str[$pos+1] = strtoupper($str[$pos+1]);
}