3

php で $string を CaPiTaLiZe したいのですが、理由は聞かないでください :D

私はいくつかの調査を行い、ここで良い答えを見つけました。彼らは本当に私を助けてくれました. しかし、私の場合、すべての単語のすべての奇数文字 (1、2、3...) を大文字にしたいと考えています。

たとえば、私のカスタム関数では、この結果「TeSt eXaMpLe」を取得しており、この「Test ExAmPlE」を取得したいと考えています。2 番目の例では、単語「example」が大文字の「E」で始まっていることがわかりますか?

それで、誰でも私を助けることができますか?: )

4

5 に答える 5

2

簡潔で簡単に実行できるため、正規表現を使用してこれを行います。

$str = 'I made some research and found good answers here, they really helped me.';
$str = preg_replace_callback('/(\w)(.?)/', 'altcase', $str);
echo $str;

function altcase($m){
    return strtoupper($m[1]).$m[2];
}

出力:「私はいくつかの研究を行い、ここで良い答えを見つけました。彼らは本当に私を助けてくれました。」

于 2011-08-22T21:42:58.053 に答える
2

まあ、それを配列にしてから、もう一度まとめます。

<?php

$str = "test example";

$str_implode = str_split($str);

$caps = true;
foreach($str_implode as $key=>$letter){
    if($caps){
        $out = strtoupper($letter);
        if($out <> " ") //not a space character
            $caps = false;
    }
    else{
        $out = strtolower($letter);
        $caps = true;
    }
    $str_implode[$key] = $out;
}

$str = implode('',$str_implode);

echo $str;

?>

デモ: http://codepad.org/j8uXM97o

于 2011-08-22T21:28:47.727 に答える
1

これが機能するはずのワンライナーです。

preg_replace('/(\w)(.)?/e', "strtoupper('$1').strtolower('$2')", 'test example');

http://codepad.org/9LC3SzjC

于 2011-08-22T21:42:40.463 に答える
1

試す:

function capitalize($string){
    $return= "";
    foreach(explode(" ",$string) as $w){
        foreach(str_split($w) as $k=>$v) {
            if(($k+1)%2!=0 && ctype_alpha($v)){
                $return .= mb_strtoupper($v);
            }else{
                $return .= $v;
            }
        }
        $return .= " ";
    }
    return $return;
}
echo capitalize("I want to CaPiTaLiZe string in php, don't ask why :D");
//I WaNt To CaPiTaLiZe StRiNg In PhP, DoN'T AsK WhY :D

編集: 出力に特殊文字がない問題を修正しました。

于 2011-08-22T21:57:46.240 に答える