note 94669 deleted from function.ucwords by danbrown

From: 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; } ?>

« previous php.notes (#162998) next »