2016-07-22 3 views
1

ここは私がやっていることです。orと特殊文字を含むPHPのキーワード

私はそれらを変換するために


大文字の文字列のカップル†、HELLO THERE
DAY OR NIGHT

を持って、私は次のコードを使用しています:

ucwords(strtolower($string)); 

最終結果は次のとおりです。

†こんにちは
昼も夜

言葉が

を表示することができ、それので、どのように私はそここんにちは†または任意の特殊文字を無視することができます

、どのように小文字のように、またはすべてを小文字にすることができますか?

+0

あなたは「特殊文字」とはどういう意味ですか? "é"は特殊文字ですか? –

+0

まあ、私はこの†(この場合)のような特殊文字について話しています。 –

+0

それでは、どのように '' HELLO''''''''''''''''を出力するのですか? – MonkeyZeus

答えて

1

試してみてください。

print preg_replace_callback('#([a-zA-ZÄÜÖäüö0-9]+)#',function($a){ 
    return ucfirst(strtolower($a[0])); 
}, 
'†hello THERE' 
); 

[a-zA-ZÄÜÖäüö0-9]+これだけ

あなたはまた、これを使用することができます文字がある単語を見つける代わりに[\w]+ 参照:http://www.regular-expressions.info/wordboundaries.html

preg_replace_callback呼び出した結果

の機能

function($a){} do someth結果はここにありますucfirst(strtolower())

0
$lowerString = strtolower($string); 
    $stringArray = explode($lowerString, ' '); 
    foreach ($stringArray as $key => $singleString) { 
     $i = 0; 
     $formatedString = ''; 
     $upcased = false; 
     for ($i; $i < strlen($singleString); $i++) { 
      $ascNum = chr($singleString[$i]); 
      $word = $singleString[$i]; 
      if (!$upcased) { 
       if (($ascNum >= 65 && $ascNum <= 90) || ($ascNum >= 97 && $ascNum <= 122)) { 
       $word = ucwords($word); 
       $upcased = true; 
       } 
      } 
      $formatedString .= $word; 
     } 
     $stringArray[$key] = $formatedString; 
    } 
    $result = implode(' ',$stringArray); 

多分少し複雑ですが、きれいな考えです。

0

ucwords(strtolower("†HELLO THERE"),"† "); ucwordsの2番目のパラメータはoptional delimiterです。したがって、daggerとspaceの両方を含めることによって、提供された例に対してucwordsが機能します。あなたの2番目の質問について

here

0

と仮定すると、単語はスペースで区切られて参照してください。

<?php 
function custom_ucfirst($s) 
{ 
    $s = strtolower($s); 

    $e = (strpos($s, ' ') !== false ? explode(' ', $s) : array($s)); 

    $keep_all_lowercase = array('or','and','but'); 

    foreach($e as $k=>$v) 
    { 
     if(!in_array($v, $keep_all_lowercase)) 
     { 
      $str_split = str_split($v); 

      foreach($str_split as $k2=>$v2) 
      { 
       if(in_array($v2, range('a','z'))) 
       { 
        $str_split[$k2] = strtoupper($v2); 
        break; 
       } 
      } 

      $e[$k] = implode('', $str_split); 
     } 
    } 

    return implode(' ', $e); 
} 

echo custom_ucfirst('†HELLO THERE .cloud. or sky what a nice an*d()good day.'); 

// †Hello There .Cloud. or Sky What A Nice An*d()Good Day. 
関連する問題