• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Gurzi

Convert to int

8 mensagens neste tópico

Boas malta.

Ouvi dizer e tem lógica que seja verdade que uma comparação é feita mais rapidamente se for feito ao inteiro ao invés de ser feito ao char.

O que quero dizer é isto.

if( $a == $:( em que $a e $b são um 'char' a condição ficava mais rápida se ambos fossem um inteiro.

O meu problema é, quero fazer um conversor de caracteres marados para html aqueles tipo (ç, à, é, ì, â, ã) mas como posso fazer os testes com valores inteiros destes rapazes ?

Obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

echo ord($chr);

ou

$arr=array();
for($i=0;$i<strlen($str);$i++) $arr[]=ord($str{$i});

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas malta.

Ouvi dizer e tem lógica que seja verdade que uma comparação é feita mais rapidamente se for feito ao inteiro ao invés de ser feito ao char.

por acaso também já ouvi dizer que em muitas situações trabalhar com int's é mais eficiente, mas esta não me parece uma delas.

comparar dois char's significa, na pior das hióteses comparar 8 bits enquanto que para os inteiros podemos ter que comparar 32 bits.

por isso parece-me estranho que a coparação de inteiros seja mais eficiente do que a comparação de char's (mas posso estar enganado!!!).

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O primeiro raciocinio que faço nestes casos é sempre do tipo do que o rui carlos fez, os computadores só entendem zeros e uns, por isso qq que seja o tipo de variável estamos sempre a falar de um determinado número de zeros e/ou uns. No entanto penso que essa informação por si só não é suficiente.

Se tens caracteres compara caracteres, estares a converter para depois comparares só vais tar a gastar mais tempo pois vais reendereçar e copiar valores. Para alem disso o PHP dá conta de conversões de tipos de variáveis quando necessário. Numa linguagem deste tipo este tipo de discussão não faz muito sentido.

A isto há ainda a acrescentar a hipótese introdução de ambiguidades que aparecem quando menos se espera.

Mas depois de tanta conversa... o php tem uma função que se chama

htmlentities()

checka o manual

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O problema é que esses caractéres marados não estão na Lista ASCII , ou seja eu para fazer um echo de um ç de cedilha tenho que usar o html, mas isso não me ajuda, porque queria era saber como era lido, tipo o utilizador vai escrever carroça e achas que ele está preocupado se o script lê ou não ç ?  Mas se tu fizeres echo "~"; ele não dá nada..

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pois, mas usando o hmtlentites() na variavel em causa, nao tens de te preocupares com nada disso. Depende de como queres usar a variavel. Se for para mandar para javascript, p.ex., podes ter alguns problemas com isto. Terás de usar um encoding UTF-8, se não estou em erro. Se for para guardar dados inseridos e depois mostrá-los (sendo guardados numa base de dados ou qualquer coisa assim, etc.), deve resolver o problema. Um exemplo do que queres fazer exactamente e quais os problemas encontrados seria útil para podermos ajudar melhor.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Gurzi, isto é das coisas mais confusas.

O ASCII já lá vai há muuuuuuuuuuuuuito tempo. Hoje em dia usam-se charsets baseados no ascii mas que já são muitas gerações a frente. O unicode por exemplo vai ter suporta para as linguas ocidentais todas, no, mesmo código :(.

Não estou muito a par disto. Penso que o unicode, na sua versão actual é o que se designa por UTF-8.

Ninguem usa ascii hoje em dia. Escolhe um charset compatível com a nossa lingua, eu aconselho utf-8, e sempre que enviares texto para um output html usa a função htmlentities.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Atenção, UTF-8 não é um charset, mas sim um encoding. São coisas independentes, um charset designa os caracteres existentes, o encoding designa a sua representação. Isto é um bocado confuso (lol ainda não percebi muito bem esta questão toda!), mas parece ser uma diferença importante. Aparentemente, 1 determinado caractere, independentemente do charset será sempre representado da mesma forma quando codificado com UTF-8. Isto ao nível de armazenamento, em hex. Também não percebo bem disso, foram umas noções que apanhei pesquisando por aí. Se houver alguma alma caridosa que esteja disposta a esclarecer o assunto, faça favor.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora