2010-09-28 29 views
11

Quiero eliminar todos los caracteres especiales (",/{} etc.) A partir de un campo de entrada se guarda como una cadena a la base de datos.¿Cuál es el mejor enfoque para eliminar caracteres especiales con ColdFusion y Microsoft SQL?

¿Cuál es el mejor enfoque?

debe abordarse esta comprobación con JS, ColdFusion o Microsoft SQL -? Tal vez los tres

¿Cómo hago para codificar esta usando ColdFusion o Microsoft SQL

+0

Para la interfaz de usuario, debe verificar JQuery Masked input. http://digitalbush.com/projects/masked-input-plugin/ http://plugins.jquery.com/project/maskedinput – Vikas

+0

Eliminarlo en la capa de la aplicación (es decir, CF) tiene más sentido. Tal vez lo encuentre útil: http://demo.bryantwebconsulting.com/datamgr/word.cfm – Henry

Respuesta

15

¿Quiere decir todo lo que no es alfanumérico?

Probablemente usaré un REReplace en la capa de datos.

<cfqueryparam 
    cfsqltype="cf_sql_varchar" 
    value="#REReplace(myVar,"[^0-9A-Za-z ]","","all")#" 
/> 

actualización: modificado para incluir el "espacio".

+0

Agregúelo como un carácter válido. Cambié mi respuesta para permitir el uso del carácter de espacio. – ale

+0

¿Por qué omitir las puntuaciones? – Henry

+0

¿Funciona con UTF-8? Supongo que no, ¿estoy en lo cierto? –

3

¿seguro que deseas lista negra sólo aquellos caracteres Por lo general, un enfoque mucho más seguro es? para incluir solo en la lista blanca los caracteres aceptables.

Si desea asegurarse de que sus datos se mantienen puros, el lugar más seguro para hacerlo es en el origen, utilizando un desencadenador INSERT/UPDATE.

Puede escribir una UDF que hace esto en T-SQL o, para un mejor rendimiento, implementarla como una función CLR usando C# o similar.

Hacer esto solo en SQL podría causar problemas de validación. Por ejemplo, si el usuario solo ha ingresado caracteres no válidos en un campo obligatorio, esencialmente no le han dado ninguna entrada, por lo que es probable que su GUI arroje un error de validación. Por lo tanto, es mejor contar con comprobaciones de validación para la usabilidad en su interfaz y desencadenantes para la integridad de los datos en el back-end.

6

utilizar una expresión regular en ColdFusion

<cfset cleanInput = rereplace(form.input,"[^A-Za-z0-9]","","all") /> 

Esto dice reemplaza cualquier carácter que no es a través de un Z o A a la Z o del 0 al 9 con nada y que lo haga por todo el mundo conocido.

+2

En cuanto a "cuándo hacerlo": Javascript: cuando necesita que el usuario lo sepa para una conveniencia Servidor de aplicaciones: siempre para validación y puede solicitar correcciones Nivel de base de datos: Depende de la política de su organización, pero es realmente extra, extra Es más fácil dar retroalimentación a nivel de aplicación. –

0

Lo usé como una verificación para obtener una devolución falsa si los caracteres no estaban en la lista blanca.

<cfif len(testString) EQ len(rereplaceNocase(testString,"[^A-Za-z0-9-+$. _[]","","all"))> 
    TRUE<br> 
<cfelse> 
    FALSE<br> 
</cfif> 
+0

Alternativamente: '' –

+1

@PeterBoughton ¿qué busca/acepta su regx? – HPWD

+0

Exactamente igual que el publicado, pero con 'A-Za-z0-9_' condensado a' \ w' y escapes faltantes añadidos a '-' y' ['caracteres. _Más significativamente_ es que todas las tonterías len/replace se han eliminado, por lo que es más obvio lo que está sucediendo y funcionará más rápido. –

Cuestiones relacionadas