星期日, 9月 19, 2010

菊花文

菊花文是最近網路流行的ㄧ種新文體,大概就是那些自我感覺良好的人才會使用,因文字後面加上菊花符號,因此而得名。

寫程式也要趕的上一些流行對吧,那麼就來一個 PHP 版的菊花文轉換函式:

class Chrysanthemum{
        
public static function get ($str
)
        {
                
mb_internal_encoding("UTF-8"
);
                
$len mb_strlen($str
);
                
$mb 
= array();
                for (
$i 0$i $len$i
++) {
                        
$mb[] = mb_substr($str$i1
);
                }
                
$mb[] = ""
;
                return 
implode("҉"$mb
);
        }
}
?>


意思就是將字串拆為每個字,然後在中間加上菊花符號(҉)。

echo Chrysanthemum::get("菊花文");

嗯嗯~下面就是結果囉...

菊҉花҉文҉

3 則留言:

  1. 不簡單,這個很有趣...另外請教企鵝大,
    上述的程式是否就是以OOP精神所撰寫,所以用class包了起來
    另外我不是專業的開發,想法就很簡單在for裡面就直接上
    $ok .= mb_substr($str, $i, 1)."҉";
    最後return $ok
    結果看起來也是一樣...但是眉頭一皺總覺得事情並不單純,
    是不是又有什麼效率還是標準性的問題?
    (差點忘了自我介紹,我是TWPUG的Shiang,打擾您了~)

    回覆刪除
  2. 哈~就直接的結果論而言,如同你撰寫的方式組合出字串..也是方式之一。但是不知道你有沒有學過一種開發論(其實我也不知道正式名稱),就是將需求的文字敘述,轉換為程式。

    例如我去訪談後,所紀錄下的需求內容是:『菊花文是將字串每個字中間加上菊花符號』

    字串(變數)、每個字(方法回傳)、每個字中間加上橘花符號(方法)。所以依照這個開發論,我就是要寫這樣的處理。

    但是我是寫PHP,一個簡單的幾行程式碼,我不會將一個類別寫這麼多方法來處理,所以我只有寫一個get來綜合所有的,但我又不想失去程式即敘述的特性。所以我才會寫,將字串,拆成每個字($mb),然後中間加上橘花符號(implode 菊花)。

    結果我寫完後,發現橘花開的不夠,文字尾要在多一朵菊花比較好看。所以文字尾要在多一朵菊花 ($mb[] = "";)。

    所以我大部分寫程式的邏輯都是如此,敘述即程式,程式就是敘述。

    嗯~我也嘗試將你的寫法敘述化(菊花文是將字串中的每個字後加上橘花符號),就最終的結果論而言,我們產出結果都一樣,但是在需求敘述上,是不一樣的東西囉!!

    回覆刪除
  3. 謝謝企鵝大的清楚說明,獲益匪淺...
    看樣子"字後"和"字中"有著唯妙的差異性,如果放在大型的開發專案來看,"程式敘述"會是左右開發過程與結果的重要關鍵...沒交代好就會發生客戶抱怨開發結果不如預期或者開發人員搞不懂客戶到底要甚麼只好瞎摸的窘況,最後因為邏輯上關鍵造成要翻盤重寫或者修改到不成一個樣子....恩,小觀念大意義~

    回覆刪除

我的意見