note 94669 deleted from function.ucwords by danbrown
| From: | danbrown@php.net | Date: | Tue, 17 Nov 2009 19:02:09 +0000 |
| Subject: | note 94669 deleted from function.ucwords by danbrown | ||
| References: | 1 | Groups: | php.notes |
| Request: | Send a blank email to php-notes+get-162998@lists.php.net to get a copy of this message | ||
Note Submitter: sica at wnet com br
----
This function (PRIMA) is to convert personal names written in the ISO 8859-1, especially for names
of Portuguese from Brazil (pt_BR). The first letter will be capitalized and the link names will be
tiny ( 'da', 'das', 'de', 'do', 'dos',
'e'). The letters that appear alone will be scored as short, with the exception la letra
'e' which is used as connection names like "Costa e Silva."
Esta função (PRIMA) é para converter nomes pessoais escritos no padrão ISO 8859-1;
especialmente para nomes do português do Brasil. A primeira letra ficará maiúscula e os
nomes de ligação ficarão minúsculos ('da', 'das', 'de',
'do', 'dos', 'e').
<?php
// autor: Carlos Sica
// PRImeira MAÃscula = PRIMA
// licensa GPL
function prima($nome){
// primeiro torna tudo minúsculo cuidando das acentuadas
for($char=0; $char<=strlen($nome); $char++){
// se for letra maÃscula acentuada transforma em minúscula acentuada
if((ord($nome[$char]) >= 192) && (ord($nome[$char]) <= 223))
$nome[$char] = chr(ord($nome[$char]) + 32);
}
// porque a função strtolower não pega letras acentuadas
$nome = explode(" ", strtolower($nome));
foreach ($nome as &$valor) {
// faz a primeira maÃscula excluindo as palavras que ligam dois nomes
if(($valor != "da") && ($valor != "das") && ($valor !=
"de") && ($valor != "do") && ($valor != "dos")
&& ($valor != "e"))
$valor[0] = strtoupper($valor[0]);
// coloca ponto de abreviação quando a letra vier sozinha, excluindo a letra 'e'
que liga dois nomes
if((strlen($valor) == 1) && ($valor[0] != "e") && (ord($valor[0]) <
0) && (ord($valor[0]) > 9))
$valor .= ".";
// se a primeira letra for minúscula acentuada transforma em maÃscula acentuada
if((ord($valor[0]) >= 224) && (ord($valor[0] <= 255)))
$valor[0] = chr(ord($valor[0]) - 32);
}
$nome = implode(" ", $nome);
return $nome;
}
?>