Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Eliseu - Tatuí

[Resolvido] Calculo no php

Recommended Posts

Boa tarde pessoal!

Eu estou desenvolvendo um motor de busca em php+mysql, e tudo está funcionando normal, só que eu queria fazer um sistema igual ao Google, que se a pessoa digitar, por exemplo, 10+10 o Google ao invés de mostrar o resultado da pesquisa ele reconhece como uma conta e retorna o resultado de 20, e embaixo do resultado ele mostra um link perguntando se você quer efetuar uma busca com o termo pesquisado que é 10+10.

 

Alguém poderia me dar uma idéia como fazer isso?

 

Até mais!

Compartilhar este post


Link para o post
Compartilhar em outros sites

$str = '10+10';
eval("\$result = $str;");
echo $result;

http://br.php.net/eval

como que eu faço pra nesse codigo abaixo não aceitar letras e caracteres " somente aceitar caracteres matemáticos como / * - + %", porém aceitar somente números, e que os dados sempre estejam num padrão, ou seja, 20*20 certo, 20*/-+20 errado, tem como fazer o sistema além da validação pra retirar as letras e caracteres, e aceitar só os números e os caracteres matemáticos, também validar para que o formato seja aceito só tipo [numero1][simbolo matematico][numeros2].

 

Eu espero que você possa me ajudar, pois já faz tempo que estou quebrando a cabeça nisso...

 

 

 

<?php
$str = $_get['calcular'];
eval("\$result = $str;");
echo $result;
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Use expressões regulares

 

preg_match() faz validação

preg_replace retira caracteres indesejados

eu não consegui fazer com o preg_match(), porém eu fiz desse jeito, vê se está certo:

<?php $calculadora = $_GET['q'];
$validar_calc = "([0-9])([*|+|/|-]{1})([(0-9)])";
if(ereg($validar_calc,$calculadora)){
eval("\$resultado = $calculadora;");
echo "<img src=\"imagens/calc_img.gif\" width=\"40\" height=\"28\"> <strong>$calculadora = $resultado</strong>";
}else{
echo "";
}
?>
Eu fiz dessa maneira e funciona do jeito que quero, todavia se alguém digitar 10*10/ vai dar erro, como que eu faço em $validar_calc = "([0-9])([*|+|/|-]{1})([(0-9)])"; para que depois da última ([(0-9)]) eu impeça que alguém enviei texto, caracteres ou até mesmo os sinais matemáticos?

 

até mais,

Compartilhar este post


Link para o post
Compartilhar em outros sites

preg_* são mais rápidas que reg_*. preg_* usa padrão Perl e é necessário usar delimitador. Basta inserir barras na ER:

 

/ER_AQUI/modificadores

Os modificadores são opcionais

 

Sua ER não permite espaços. Ou seja 10 + 10 não é válido.

 

Para evitar textos após e antes a expressão, use os delimitadores de inídio e fim de linha: ^início de linha. $ fim de linha

 

/^ER$/

Compartilhar este post


Link para o post
Compartilhar em outros sites

preg_* são mais rápidas que reg_*. preg_* usa padrão Perl e é necessário usar delimitador. Basta inserir barras na ER:

 

/ER_AQUI/modificadores

Os modificadores são opcionais

 

Sua ER não permite espaços. Ou seja 10 + 10 não é válido.

 

Para evitar textos após e antes a expressão, use os delimitadores de inídio e fim de linha: ^início de linha. $ fim de linha

 

/^ER$/

Está dando erro no meu código abaixo, aonde será que estou errando?

Warning: preg_match() [function.preg-match]: No ending delimiter '^' found in C:\wamp\www\******\buscar.php on line 76

 

 

<?php $calculadora = $_GET['q'];
///$validar_calc = "([0-9])([*|+|/|-]{1})([(0-9)])";
///$calculadora2 = preg_replace("/[{A-Za-z}]/i", "", $validar_calc);
if(preg_match("^([0-9])([*|+|/|-]{1})([(0-9)])$", $calculadora)){
eval("\$resultado = $calculadora;");
echo "<img src=\"imagens/calc_img.gif\" width=\"40\" height=\"28\"> <strong>$calculadora = $resultado</strong>";
}else{
echo "";
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.