簡體   English   中英

將str的第一個字符大寫,但忽略一個或兩個字母詞

[英]Turn first character of str capitalized but ignore one or two letter words

我是新手,這對我來說很難。

我在變量中有一個文本:

$bio = 'text, text, tex ...';

我可以使用ucfirst php函數使文本中的單詞以大寫字母開頭。

問題是我不希望將帶有一個,兩個或三個字母的單詞大寫,因為它看起來不專業。

重要提示:但我也想將字母“ I”大寫,因為這是正確的英語語法。

像這樣的文本:這是沒有ucfirst函數的文本,我認為它需要大寫

看起來像:這是沒有Ucfirst功能的文本, 認為需要大寫

有任何想法嗎?

這將大寫4個或更多字母的單詞(英文字母序列):

$bio = preg_replace_callback('/[a-z]{4,}|\bi\b/i', function($match){
    return ucfirst($match[0]);
}, $bio);

對於5.3之前的PHP版本:

$bio = preg_replace_callback('/[a-z]{4,}|\bi\b/i',
  create_function('$match', 'return ucfirst($match[0]);'), $bio);

它將保留任何較短的詞,例如Iadd ,並大寫i

我會使用正則表達式。 如果不想,可以使用split,然后遍歷令牌並使用一堆if-else,但是regex比較涼爽。 ;)

這里有一個非常相似的問題:正則表達式每個單詞的首字母大寫,也要在破折號之后加上特殊字符

嗯?

$bio_x = explode(" ",$bio); if(strlen($bio_x[0]) > 3) $bio = ucfirst($bio); $bio = str_replace(" i "," I ",$bio);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM