note 29380 added to function.ucwords

From: Date: Tue, 11 Feb 2003 22:55:55 +0000
Subject: note 29380 added to function.ucwords
Groups: php.notes 
Request: Send a blank email to php-notes+get-43799@lists.php.net to get a copy of this message
Not everything must be capitalized. Many times we need words to be in lowercase or all in uppercase. When a word have numbers for example, it may be a special code that must not be changed. The function below is my best effort to produce an human-like capitalization of strings. Try it for yourself and take your own conclusions. It is automatic and also works with some foreign characters. The second optional parameter when set to zero produce strings like ucfirst() function (by default it generate strings like ucwords() function). function finecase($str,$type="words") { $arr=explode(" ",$str); foreach($arr as $key=>$value) { if(eregi("^[AEIOUÀ-ÿ]{1,2}$",$value)) { $value=strtolower($value); } if(eregi("^[B-DF-HJ-NP-TV-Z][AEIOUÀ-ÆÈ-æè-ÿ]$",$value)) { $value=strtolower($value); } if(eregi("^[AEIOUÀ-ÿ][B-DF-HJ-NP-TV-Z]$",$value)) { $value=strtolower($value); } if(eregi("^[A-ZÀ-ÿ-]{3,50}$",$value)) { if($type=="words" or !$key) { $value=ucfirst(strtolower($value)); } else { $value=strtolower($value); } } elseif(eregi("^.{3,50}$",$value)) { if($type=="words" or !$key) { $value=ucfirst($value); } } if(eregi("^[A-ZÀ-ÿ]+([!-/:-@\-`{-~]+[A-ZÀ-ÿ]+)+$", $value)) { if($type=="words" or !$key) { $value=ucwords(strtolower($value)); } else { $value=strtolower($value); } } if(eregi("^[A-ZÀ-ÿ]{3,50}(,|\.+)$",$value)) { if($type=="words" or !$key) { $value=ucfirst(strtolower($value)); } else { $value=strtolower($value); } } if(eregi("^[b-df-hj-np-tv-zçñ]+$",$value)) { $value=strtoupper($value); } if(eregi("^.+$",$value) and ereg("^.*(\.+|\?|!|;)$",$arr[$key-1])) { $value=ucfirst($value); } $arr[$key]=$value; } $str=join(" ",$arr); return $str; } Regards, Edemilson Lima -- http://www.php.net/manual/en/function.ucwords.php http://master.php.net/manage/user-notes.php?action=edit+29380 http://master.php.net/manage/user-notes.php?action=delete+29380 http://master.php.net/manage/user-notes.php?action=reject+29380

« previous php.notes (#43799) next »