Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Umbus

[Resolvido] Eliminar letras e caracteres estranhos

Mensagens Recomendadas

Umbus

Boas pessoal,

Gostava de eliminar tudo de uma string para apenas ficar com este tipo de numeros:

45.125855

546456.546456

54546.23

...

Ou seja numero+ponto+numero

Para alem disso, gostaria de que todas as virgulas passassem a pontos, e obrigasse a ter apenas o ultimo ponto da string seguido de um numero

Alguma ajuda?

Obrigado

Editado por Umbus

Eu sou eu e eu sou aquele que sou eu...

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

para trocar caracteres :

preg_replace : http://php.net/manual/en/function.preg-replace.php

str_replace : http://pt1.php.net/manual/en/function.str-replace.php

para eliminar tudo que não se encaixe no teu "modelo" :

preg_replace : http://php.net/manual/en/function.preg-replace.php


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
NunoDinis

Estranha forma de vida que tem a capacidade de transformar comandos em mensagens de erro.

ndsotware.org

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Umbus

Eu usei o preg_replace e o str_replace. Com o str_replace fiz a alteração de virgulas por pontos mas o preg_replace n consegui eliminar os simbulos e letras, o codigo não deve tar certo, n tou em casa portanto pode n ser bem o que pus mas foi algo do genero:

^[0-9]{1,}+(/.[0-9]{1,})?$


Eu sou eu e eu sou aquele que sou eu...

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Umbus

N tenho exemplos porque e para um formulario para utilizadores quero apenas prevenir craches. O que quero esta explicado numero um ponto e outro numero. Acho e que o codigo regex nao deve estar bem feito.


Eu sou eu e eu sou aquele que sou eu...

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Umbus

Obrigado. So uma duvida nao e preciso colocar antes assim:

#[0-9]{1,}+\.[0-9]{1,}+#

Porque o numero pode ter varios algorismos?

E assim:

#[0-9]{1,}+(\.[0-9]{1,})?+#

Se houver um numero sem ponto?


Eu sou eu e eu sou aquele que sou eu...

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Umbus

Desculpa podes explicar o significado do \d? Nao conheço.

Desde ja uma grande obrigado nao testei ainda mas assim que possivel testarei.


Eu sou eu e eu sou aquele que sou eu...

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
yoda

\d é igual a [0-9]

Aqui está uma correcção ao anterior :

$regex = '#(\d+(\.\d+)?)#';

edit : ficou um pouco mais complexo, mas funciona bem.

versão de testes :

<?php
$cases = array(
'some text jajsjas 212.112 jia ahkb 2.5 nayjsd ds 123.12.42',
'some text jajsjas 212.112 jia 3. ahkb nayjsd ds 0 ',
'some text jajsjas 2.112 jia .3 ahkb nayjsd 7 ds . ',
);
foreach($cases as $id=>$string)
{
$matches = array();

preg_match_all('#[\d+\.]+#', $string, $result);

foreach($result[0] as $match)
{
 if (substr_count($match, '.') <= 1) {
  if (preg_match('#(\d+(\.\d+)?)#', $match, $result))
  {
   $matches[] = $result[0];
  }
 }
}
echo 'test '.$id.' : '.implode(' || ', $matches).'<br />';
}

Editado por yoda

Partilhar esta mensagem


Ligação 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

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.