2012-04-20 5 views
7

を使用して文字列の最初の大文字の位置を取得します:私は各単語の異なる文字が似首都である配列が午前PHP

アップル、オレンジ、バナナ、マンゴー、パパイヤ

私は首都である最初の文字の位置を取得したい。それに応じて注文してください。二文字の資本金はその後、初めてとなる最初の文字の資本を持っている言葉である、と 枚...

オレンジ
パパイヤ
aAple
マンゴー
バナナ

など第二になります

上記のリストの例では、2つの単語に同じ位置の大文字が含まれている場合 オレンジとパパイヤには最初の文字が大文字で入力されているため、アルファベットでソートする必要があります序列。

これはPHPで実現するのが難しいですか?

+0

http://mattgemmell.com/2008/12/08/what-have-you-tried – Jashwant

答えて

11

あなたが例えばマスク

に一致しない最初のセグメントのstrcspn()

検索長さを使用することができます。

echo strcspn('aAple', 'ABCDEFGHJIJKLMNOPQRSTUVWXYZ'); 
// prints '1' - the string starts with 1 character not in upper case 

完全なコード

echo "<pre>" ; 
$array = array("aPple", "Orange", "baNana", "mANgo", "Papaya"); 
foreach($array as $value) 
{ 
    echo $value , "= " , strcspn($value, 'ABCDEFGHJIJKLMNOPQRSTUVWXYZ') . PHP_EOL; 
} 

出力

aPple= 1 
Orange= 0 
baNana= 2 
mANgo= 1 
Papaya= 0 

この機能を使用して(逆の)ソートを行います。

+4

アルファベット全体を持つ理由が何であれ嫌いなら、 –

+1

@RobinCastlinあなたの 'implode'文は1つの文字しか保存しません;-) –

+0

ええ、それは本当です。あなたは' strcspn('AAple '、implode(' A '、' Z ')))) 。しかし、私はむしろシステムをAからZにして、自分でそれを入力するようにしました。 :D私は手紙を忘れるかもしれない! –

1
preg_match("/^.*?[A-Z]/", 'aAple', $arr); 

$str_position = (strlen($arr[0]) - 1); 

これを行う方法はたくさんあります。最も論理的なものを使用してください。 :)

これは文字列の最初の部分を最初の大文字に戻します。それから私は、文字列の長さを計算し、あなたがPHP> 5.3を使用している場合は、これを使用することができます。1.

1

によって減算:

$test = array("aPple", "Orange", "baNana", "mANgo", "Papaya"); 

echo implode(', ', array_map(function($value){ 
    $matches = array(); 
    preg_match('/[A-Z]/', $value, $matches, PREG_OFFSET_CAPTURE); 
    return $matches[0][1]; 
}, $test)); 

は、そうでなければ、あなたがラムダ関数の代替として別の関数を作成する必要があります。

出力:あなたがそれを行うには非派手な方法をしたい場合は、ここに私の提案です1, 0, 2, 1, 0

0

gettingsため

**がキャップ位置*

function getCapsPosn($str) 
{ 
    $i = 0; 
    $CapsPosn = -1; 
    for ($i =0 ; $i < strlen($str) ; $i++) 
    { 
    if ((ord($str[$i]) >= 65) && (ord($str[$i]) <= 90)) 
    { 
     //echo ord($str[$i]); 
     $CapsPosn = $i; 
     return $CapsPosn; 
    } 
    } 
} 

使用配列にCapsのposnを格納する連想配列配列['aPple'] = '1' など。 php sort関数を使ってそれをソートします。 PHPソート関数は次の場所にあります:http://php.net/manual/en/array.sorting.php

関連する問題