Ver Mensaje Individual
  #6 (permalink)  
Antiguo 20/06/2011, 15:31
Avatar de fitorec
fitorec
 
Fecha de Ingreso: septiembre-2008
Ubicación: Oaxaca Oaxaca
Mensajes: 3
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Validar caracteres especiales (acentos, etc)

Cita:
Iniciado por juaniquillo Ver Mensaje

Código PHP:
//caracteres latinos alfanumricos
$permitido "a-zA-ZÁÉÍÓÚáéíóú"
y luego hago un ereg para ver si el usuario ha escrito algo no adecuado:

Código PHP:
if (!ereg("^[ $permitido]{3,}$",$valor_a_validar)) $mensajes .= $error[1]; 
.

Cita:
Iniciado por mass Ver Mensaje
Gracias juan pero eso es algo que quiero evitar porque... buff, sería bastante chapucero el tema......
Dudo que sea tan chapucero Si Define reglas de validación y un comportamiento en tus modelos/controladores. (supongo que el Symfony te lo permite),al cargar i18n & l10n.

Ahora el ereg funciona pero NO es recomendable, mayor información:

http://php.net/manual/en/function.ereg.php#refsect1-function.ereg-description


Creo lo mejor es definir reglas de validación en expresiones para cada idioma, te dejo un codigo donde agrego otros caracteres que no contempla el \w como la ñ,ü(--si no como escribo pingüino--),comas,puntos, y paréntesis.

Código PHP:
<ul>
<?php
  $text 
='/^[a-z0-9 .,()üÜáéíóúÁÉÍÓÚñÑ]{5,100}$/i';
  
  
$test = array(    'Holá (muÑdo).',
                    
'MundIrijIlLO 01234, av. 2',
                    
'<h1>hola mundo</h1>',
                    
'Guíllerño Ángel',
                    
'Sr. Madriguera','01 999 888 11 22',
                    
'(01)953-111 2233',
                    
'123456',
                    
'<script>someJAvascriptCode</script>'
  
);

  foreach (
$test as $cadena):
    if(
preg_match($text,$cadena))
        echo 
"<li><b>cadena valida</b>{$cadena}</li>\n";
    else
        echo 
'<li><b>cadena invalidad</b>'.htmlspecialchars($cadena)."</li>\n";
    endforeach;
?>
</ul>
Salida:

Código HTML:
<ul>
<li><b>cadena valida</b>Holá (muÑdo).</li>
<li><b>cadena valida</b>MundIrijIlLO 01234, av. 2</li>
<li><b>cadena invalidad</b>&lt;h1&gt;hola mundo&lt;/h1&gt;</li>
<li><b>cadena valida</b>Guíllerño Ángel</li>
<li><b>cadena valida</b>Sr. Madriguera</li>
<li><b>cadena valida</b>01 999 888 11 22</li>
<li><b>cadena invalidad</b>(01)953-111 2233</li>
<li><b>cadena valida</b>123456</li>
<li><b>cadena invalidad</b>&lt;script&gt;someJAvascriptCode&lt;/script&gt;</li>
</ul> 

Última edición por fitorec; 20/06/2011 a las 15:38