note 29380 added to function.ucwords
| From: | Edemilson at rack1 dot php dot net | 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