terça-feira, abril 15, 2008

orkut não diz nada

Outro dia minha cunhada me perguntou se eu havia olhado o orkut da nova namorada do meu irmão. Respondi que não, e ela falou que deveria, pois é namorada do meu irmão e deveria me preocupar com isso. Agora me diga: O que o orkut diz sobre uma pessoa?

Se você quer conhecer uma pessoa, você precisa conversar com ela, dar tempo para que você consiga ter alguma opinião sobre ela (se esse for o intuito), não entrar no orkut. Sites de relacionamento mostram o que as pessoas querem mostrar, as comunidades que ela entrou para mostrar para os outros.

Eu tenho orkut e acho muito legal, pois tenho indiretamente contato com meus amigos e familiares do presente e do passado, coisa que não conseguiria se não fosse essa ferramenta. Mas é só. Colocar fotos, vídeos etc e tal é opção de cada um. Muitas pessoas fazem depoimentos lindos, mas falsos. Recados de saudades, amizade e amor, mas falsos. Entram em comunidades intelectuais, de grupos interessantes, mas somente para mostrar que se interessa pro determinado assunto, para tentar se mostrar inteligente ou ligado no mundo.

É preciso tomar muito cuidado ao avaliar uma pessoa através desses sites de relacionamento. Até empresas usam, de forma errônea para mim, orkut para selecionar candidatos. O orkut para mim é fachada. É o que você quer expor de si para o mundo, e nem sempre reflete o que você é ou o que realmente faz. Sou daqueles caras que prefere ler em papel impresso (as árvores que me perdoem) e conversar pessoalmente, sem MSN, sem Skype. As vezes olhar nos olhos de alguém lhe revela mais do que horas de conversa.

Quanto a namorada do meu irmão, ela parece ser legal...

segunda-feira, abril 07, 2008

Convertendo caracteres em entidades HTML com PHP

Esse aqui é muito legal! Cada caractere da string é convertido para entidade HTML usando a numeração decimal ASCII. Comecei usando para exibir e-mail e os robôs não pegarem (não é funciona tão bem quanto esperava, mas converte bunitinho):

function getAscii($str) {
if (strlen($str)>0) {
for ($i=0;$i<strlen($str);$i++) {
$arr[] = "&#".ord($str{$i}).";";
}
return implode('',$arr);
} else {
return '';
}
}

Abraço!

Validação de Texto com ER

Eu fiz uma postagem mostrando a função que eu uso para validar campos de acordo com seu conteúdo e tamanho máximo. Pesquisando um pouco mais, vi que as expressões regulares pecavam um pouco em alguns pontos, pois estava restringindo demais o conteúdo.
Como exemplo vou citar um site que fiz. Eu usei expressões regulares como essa: '^[A-Za-zÀ-ú0-9@#%!&\*\?\)\(\$\}\{\+\.\-\_\,\;\:\n\r ]*$'
Legal! Pega tudo! Mas ficou enorme, e analisando a tabela ASCII (usada nas expressões regulares quando usamos faiza de caracteres entre colchetes), pude observar que se eu pegar o intervalo entre exclamação e arroba (!-@) abrange todos esses caracteres:
! " #$ % & 1 ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @
que são caracteres razoáveis para se aceitar em textos. Depois do arroba, vêm as letras maiúsculas, depois abra colchete, pipe, fecha colchete, circunflexo, underline, crase e depois as letras minúsculas. Esses caracteres entre as letras maipúsuclas e minúsculas eu prefiro deixar de fora, com exceção do underline '_'... Bom, resumindo, podemos simplificar a expressão regular sem causar perigo de aceitar caracteres como NULL, CR, LF, DEL, e assim colocar os caracters fora do comum que necessitar, como no meu caso o símbolo de libra '£' (o site era para o público inglês).
A expressão então para aceitar textos comuns ficaria:
'^[A-Za-zÀ-ÿ !-@\}\{\n\r£]*$'
Eu mudei o intervalo de À-ú para À-ÿ, pois não sei se certo idioma usa 'y' com acento. E no caso mantive a permissão para nova linha e retorno de carro. Obviamente você, após receber os caracteres aceitáveis, irá tratá-los. Eu costumo:
  • substrituir \n\r por somente \n
  • arranco as chaves, colchetes etc se não for usar
  • arranco tudo que possa prejudicar meu código: str_replace(Array(']','[','{','}','>','<',chr(34),chr(39)),'',$str);
  • arranco os apóstrofes e aspas se não precisar: str_replace(Array(chr(34),chr(39)),'',$str);
  • converto \n em <br />: ereg_replace("\r",'',ereg_replace("\n",'<br />',$str));
Mas lembre-se: não saia arrancando tudo. Se você receber um texto formatado com HTML, você não pode arrancar maior, menor e aspas.
Uma vez eu precisei salvar no PostgreSQL formatar os caracteres para jogar no Adabas pelo Mainframe. Então tive que substituir e colocar tudo em maiúsculo para ficar compatível. Fiz mais ou menos isso:
function noAccent($str) {
return strtr($str, "ŠŒŽšœžŸ¥µÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýÿºª", "SOZsozYYuAAAAAAACEEEEIIIIDNOOOOOOUUUUYsaaaaaaaceeeeiiiionoooooouuuuyy..");
}
function toMainframe($str) {
return strtoupper(noAccent(strip_tags($str)));
}

e aí
$str = toMainframe($str);
Bom, expressão regular é assim: você pode controlar tudo que você quer e não quer. AS funcções do PHP ajudam bastante, mas no caso foi um exemplo de uso que pode ser aplicado a qualquer linguagem que suporte ER.

Abraço!