Fóruns sobre PHP, JavaScript, HTML, MySQLi, jQuery, Banco de Dados, CSS


Moderador: web

 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1308
Sexo: Masculino

validação preg_match aceitar barra não invertida

17-07-2009 16:12

Olá! Estou validando com preg_match. A validação ocorre ok, mas preciso que seja aceito como caracter a barra não invertida, comum. Se simplesmente a coloco juntamente com os outros carateres aceitos, há mensagem de erro. Como faço para que esse caraterer seja aceito na validação? Abaixo, o código:

if(!preg_match("/^[0-9]+(\[0-9]+)*$/i", $_POST[escala])) {$erro;}

No caso, está aceitando números de 0 a 9. Eu gostaria que aceitasse também /, para, por exemplo, cadastrar uma escala, como 1/50. Obrigado de antemão.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17722
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

validação preg_match aceitar barra não invertida

17-07-2009 16:46

É para validar data? número e barra /
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1308
Sexo: Masculino

validação preg_match aceitar barra não invertida

17-07-2009 16:55

Boa tarde, Web! Não é para data. Eu quero validar números de 0 a 9 e a barra, para inserir dados em um campo chamado escala. Tem de aceitar, por exemplo, 1/20, 1/50. Ou seja, um número, a barra e outro número. Outro exemplo: miniatura de automóvel - escala 1/18.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17722
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

validação preg_match aceitar barra não invertida

17-07-2009 17:01

Para permitir a barra dessa forma: / tem que se fazer o seguinte: \/

Montei um exemplo para aceitar: n/nn
* n = número

<?php $palavra = "1/21"; if(!preg_match("/^([0-9])\/([0-9])+([0-9])$/", $palavra)) { echo "erro"; } else { echo "certo"; } ?>

0
A melhor hospedagem para o seu site HostGator!
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1308
Sexo: Masculino

validação preg_match aceitar barra não invertida

17-07-2009 17:29

Eu entendi. Vou tentar. Obrigado pela força.
0
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1308
Sexo: Masculino

validação preg_match aceitar barra não invertida

18-07-2009 09:38

Beleza. Era isso mesmo. Obrigado novamente.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17722
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

validação preg_match aceitar barra não invertida

18-07-2009 09:48

:smile
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1308
Sexo: Masculino

validação preg_match aceitar barra não invertida

16-09-2010 14:23

Olá! Este código (atrás postado) não está aceitando validar campo de data (11/11/1111), referindo-se a caracteres inválidos, que acredito ser a barra:
if(!preg_match("/^([0-9])\/([0-9])+([0-9])$/", $palavra)) {

Deve ser feita alguma alteração para aceitar validar a data no formato acima?
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17722
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

validação preg_match aceitar barra não invertida

17-09-2010 13:01

Nesse caso, tem que validar o número de repetições, veja o original postado

if(!preg_match("/^([0-9])\/([0-9])+([0-9])$/", $palavra)) {

Agora compare com o correto

if(!preg_match("/^([0-9]{2})\/([0-9]{2})\/([0-9]{4})$/", $palavra)) {
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1308
Sexo: Masculino

validação preg_match aceitar barra não invertida

18-09-2010 22:28

Beleza. Deu certo. Obrigado.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17722
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

validação preg_match aceitar barra não invertida

19-09-2010 16:51

;)
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1308
Sexo: Masculino

validação preg_match aceitar barra não invertida

26-04-2013 13:23

Não sei se posso postar aqui ou se tenho de abrir um novo post. E como faço para a validação aceitar aspas simples, aspas duplas e arroba, por exemplo, na inserção de um texto? Estou usando: if (!preg_match("/^[_a-z0-9-áàâãÁÀÂÃéêÉÊíÍóôÓÔúÚçÇ -.]+(\[_a-z0-9-áàâãÁÀÂÃéêÉÊíÍóôÓÔúÚçÇ -.]+)*$/i", $_POST['cl18'])) {.
0
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1308
Sexo: Masculino

validação preg_match aceitar barra não invertida

26-04-2013 14:06

Estou pesquisando. Se puder complementar, isso que postei é uma expressão regular?
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17722
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

validação preg_match aceitar barra não invertida

26-04-2013 16:11

Fica assim

<?php $palavra = "abcd@'\""; if(!preg_match("/[a-z@'\"]$/i", $palavra)) { echo "erro"; } else { echo "certo"; } ?>

0
A melhor hospedagem para o seu site HostGator!
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1308
Sexo: Masculino

validação preg_match aceitar barra não invertida

26-04-2013 17:09

Obrigado. Estou testando. Está dando certo. Já coloquei alguns caracteres: if (!preg_match("/[a-z@'\"\(\)\[\],.;?!%+$\/§]$/i", $_POST['tex'])) {. Mas está ocorrendo o seguinte. Quando coloco palavras entre aspas, duplas ou simples, e há erro na validação de outro campo, a palavra está sendo exibida assim: \"palavra\" ou \'palavra\' dentro do campo de inserção, e sendo registrada assim no banco de dados. Isso é normal? Essas barras invertidas estão aparecendo quando o registro é exibido. Como posso evitar isso?
0
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1308
Sexo: Masculino

validação preg_match aceitar barra não invertida

26-04-2013 17:31

Cara, não quero flodar, mas acho que encontrei a solução para as barras invertidas junto das aspas, com stripslashes(). Usando o registro do banco de dados, fiz assim:
$_teste_str_1 = $a1['tex']; $_teste_str_2 = stripslashes($_teste_str_1); echo $_teste_str_1; echo "<br>"; echo $_teste_str_2; echo "<br>";

É isso mesmo? Vou ver se elimina as barras invertidas existentes junto de aspas de mais de uma palavra.
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17722
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

validação preg_match aceitar barra não invertida

26-04-2013 21:54

Sim, isso mesmo. Tem até uma função no site do PHP que faz isso.

<?php function stripslashes_deep($value) { $value = is_array($value) ? array_map('stripslashes_deep', $value) : stripslashes($value); return $value; } // Example $array = array("f\\'oo", "b\\'ar", array("fo\\'o", "b\\'ar")); $array = stripslashes_deep($array); // Output print_r($array); ?>

Fonte: http://php.net/manual/en/function.stripslashes.php
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1308
Sexo: Masculino

validação preg_match aceitar barra não invertida

27-04-2013 08:14

Legal. Vou testar a função. Há uma dúvida sobre preg_match: na validação que coloquei como exemplo há [...] +[...], ou seja, duas partes, e na validação que você passou como exemplo, só uma, e funciona. Por quê aquelas duas partes na validação que coloquei? E sua validação está aceitando acentuação sem precisar colocar as letras acentuadas a serem aceitas. Por quê isso acontece?
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17722
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

validação preg_match aceitar barra não invertida

27-04-2013 10:49

Acho que é necessário você passar a função stripslashes() antes do valor ser salvo no bd.

http://php.net/manual/en/function.stripslashes.php
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1308
Sexo: Masculino

validação preg_match aceitar barra não invertida

27-04-2013 11:42

Sim. Eu a testei na exibição dos registros do bd e deu certo. Conforme o que você disse, usando a função antes de salvar o valor no bd, não seria necessário eu usá-la para exibir o registro, então? Sobre as validações, a que citei e a que você citou, por quê as diferenças nelas? Não preciso fazê-la em duas partes e declarar as letras acentuadas como na que citei?
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17722
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

validação preg_match aceitar barra não invertida

27-04-2013 11:48

Quanto a partes do preg_match, segundo o manual, é usado para obter 2 segmentos de uma palavra

<?php // get host name from URL preg_match('@^(?:http://)?([^/]+)@i', "http://www.php.net/index.html", $matches); $host = $matches[1]; // get last two segments of host name preg_match('/[^.]+\.[^.]+$/', $host, $matches); echo "domain name is: {$matches[0]}\n"; ?>

Fonte: http://php.net/manual/en/function.preg-match.php

Já a barra, se ela é mostrada na exibição, e você quer retirar, sim.
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1308
Sexo: Masculino

validação preg_match aceitar barra não invertida

27-04-2013 11:55

Vou consultar sobre as partes do preg_match. Cara, sobre o que você disse sobre usar stripslashes antes de os dados irem para o bd, isso não geraria conflito com o fato de se ter de escapar o valor no caso de se ter de utilizar aspas simples, por exemplo, com addslashes (http://php.net/manual/pt_BR/function.addslashes.php)?
0
 
Avatar do usuário
ADMIN
ADMIN
Mensagens: 17722
Nome: Kleber
Descrição do site: Onde você encontra scripts grátis para o seu site
Sexo: Masculino
Localização: RJ / RJ / Brasil
Contato:

validação preg_match aceitar barra não invertida

27-04-2013 14:56

Só fazendo testes. Mas acho que o ideal é adicionar o valor no bd com o addslashes(), e recuperar os valores com stripslashes().
0
A melhor hospedagem para o seu site HostGator!
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1308
Sexo: Masculino

validação preg_match aceitar barra não invertida

28-04-2013 07:54

Sim. Salvo engano, vi que isso que disse seria interessante para se tentar evitar ataques de sql injection. Minha memória costuma me trair, mas acho que é isso.
0
 
Mais de 1000 postagens
Mais de 1000 postagens
Tópico Autor
Mensagens: 1308
Sexo: Masculino

validação preg_match aceitar barra não invertida

28-04-2013 08:07

Mas sem usar addslashes() na entrada de dados, os caracteres como aspas já estão sendo escapados. Acho que é por isso: "A diretiva do PHP magic_quotes_gpc é on por padrão, e ela essencialmente executa addslashes() para todos dados de GET, POST e COOKIE. Não use addslashes() em strings que já foram escapadas com magic_quotes_gpc já que você acabara escapando duas vezes. " (http://php.net/manual/pt_BR/function.addslashes.php). No servidor local, está on (magic_quotes_gpc = On ; magic quotes for incoming GET/POST/Cookie data). No servidor remoto costuma estar, também? Devo perguntar ao administrador do servidor remoto?
0

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado