2016-04-07 15 views
3

Şu anda başarmaya çalıştığım şey, bir sözcüğün büyük harfinin ilk ve son harflerini oluşturmaktır. Ancak bu sadece şimdi de her kelimenin ilk harfini nasıl etrafında fikrimi sarmak için çalışıyorum, büyük harfe her kelimenin son harfi değiştirenBir sözcüğün ilk ve son harfleri nasıl yapılır (bu nedenle birden çok dizgiler) php

function ManipulateStr($input){ 
    return strrev(ucwords(strrev($input))); 
} 

:

Şu anda bu benim işlevidir büyüttük.

girdi:

Bir örnek

merhaba arkadaşlarım

çıkış

: Merhaba arkadaşlar

Belki bir substr kullanmak zorunda olacak? Fakat bu, birden fazla kelimeye veya tek bir kelimeye uygulanabilir olmasını istediğim gibi nasıl çalışır?

+4

'ucwords (strrev (ucwords dönmek (strrev ($ input)))); ' – splash58

+0

İstediğiniz çıktı lütfen .. –

+0

@FrayneKonok - Sorun çıktığında şu çıktı: HellO MY FriendS ' – j08691

cevap

5

İlk defa strtolower kullanarak tüm küçük harf sizin dize yapmak ve daha sonra ilk karakteri yararlanmak için işlevini ucwords kullanmak sonra tekrar strrev kullanabilir ve diğer birinci karakterleri yararlanmak için ucwords geçerlidir. ve ardından orijinal dizeyi ilk ve son karakter büyük harflerle geri almak için son olarak strrev kullanın.

Güncelleme Fonksiyonu

function ManipulateStr($input){ 
    return strrev(ucwords(strrev(ucwords(strtolower($input))))); 
} 
+0

Eksiksiniz 1 ')' – choz

+0

şimdi düzenlenmiş, şimdi iyi. –

0

Bunu deneyin sağlanan Frayne daha şaşırtıcı hızlı fonksiyonu (~% 20 daha hızlı) arıyorsanız:

function ManipulateStr($input) 
{ 
    return implode(
     ' ', // Re-join string with spaces 
     array_map(
      function($v) 
      { 
       // UC the first and last chars and concat onto middle of string 
       return strtoupper(substr($v, 0, 1)). 
         substr($v, 1, (strlen($v) - 2)). 
         strtoupper(substr($v, -1, 1)); 
      }, 
      // Split the input in spaces 
      // Map to anonymous function for UC'ing each word 
      explode(' ', $input) 
     ) 
    ); 

    // If you want the middle part to be lower-case then use this 
    return implode(
     ' ', // Re-join string with spaces 
     array_map(
      function($v) 
      { 
       // UC the first and last chars and concat onto LC'ed middle of string 
       return strtoupper(substr($v, 0, 1)). 
         strtolower(substr($v, 1, (strlen($v) - 2))). 
         strtoupper(substr($v, -1, 1)); 
      }, 
      // Split the input in spaces 
      // Map to anonymous function for UC'ing each word 
      explode(' ', $input) 
     ) 
    ); 
} 
İlgili konular