PHP bütün kapaklarını çıkarın

2 Cevap

Ben bir MySQL veritabanı içine form girişlerini eklemek için PHP kullanabilirsiniz. Bazen kullanıcılar tüm kapaklar metni girin. Yalnızca ilk harfleri büyük, böylece bunu değiştirmek için herhangi bir yolu var mı? Ben zaten harfle değilse ilk harfi capitolize etmek istemiyorum çünkü ucwords(strtolower($word)) Benim için çalışmaz.

Insanlar kendi soyadlarını göndermek benim ana konudur. Çoğu insan doğru gönderebilirsiniz, ancak bazı tüm kapaklar olarak gönderebilirsiniz. Tüm kapaklar ise, ucwords(strtolower($word)) gibi aynı çalışması gerekir, ama birisi De la Rosa gibi kendi adını gönderdiğinde eğer, ben De La Rosa değiştirmek istemem.

2 Cevap

<?php

function ucwordsreplace($matches) {
    return ucwords(strtolower($matches[0]));
}

$original = "some UPPERCASE words GO HERE";
$fixed = preg_replace_callback('/\b[A-Z]+\b/', "ucwordsreplace", $original);

echo $fixed; // some Uppercase words Go Here

Regex tamamen büyük harf sadece kelimeler (her tarafta bir kelime sınırı ile büyük harflerden herhangi bir sayı) eşleşir ve sonra sadece ilk harfi büyük ile değiştirme metnini döndüren tanımlı fonksiyon için bunlardan her biri geçer.

Ayrıca UPPERCA $ E gibi şeyleri engellemek istiyorsanız o zaman regex için diğer semboller eklemek olabilir, hatta sadece olmayan tüm küçük harf karakterleri neticesinde (yerine kullanılması [^a-z] [A-Z]).

Sana gösterilen işlevi doğru olduğunu düşünüyorum ..

Ama kesin bir gereklilik ne ..

Ucwords kullanımı için örnekte şu

<?php
$foo = 'hello world!';
$foo = ucwords($foo);             // Hello World! 

$bar = 'HELLO WORLD!';
$bar = ucwords($bar);             // HELLO WORLD!
$bar = ucwords(strtolower($bar)); // Hello World!
?> 

Else if u want only the first to be uppercase and not every first character of the string to be uppercase then try ucfirst() function.