Pregunta

Hay una forma de comentario donde me gustaría que la gente sea capaz de escribir en lenguas extranjeras también. Pero, por ejemplo, mi mecanismo de filtrado de spam bloquearía algo naiive como la palabra "ete" simplemente porque no tiene vocales en ella (vocales inglesas que es).

Mi pregunta es, al utilizar expresiones regulares para detectar vocales como:

$pattern = '/[aeiou]/';

No puedo escribir simplemente

$pattern = '/[aeiouéáíúó...]/';

y el servidor que interpretaría así. ¿Cómo puedo hacer esto por lo que se interpreta así?

Para alfabetos no latinos como el ruso y hebreo, ¿Hay un método que pueda detectar el idioma del contenido pertenece y llevar a cabo un mecanismo de filtrado de spam apropiado?

El propósito del conjunto de filtrado de spam es bloquear algo como: "gjkdkgahg" o "TTT", es una página visible públicamente.

¿Fue útil?

Solución

$pattern = '/[aeiouéáíúó]/';

Utilice la u modificador para obtener Unicode expresiones regulares y sea conscientes de que deben trabajar, asumiendo que usted está trabajando con cadenas UTF-8 a través de su aplicación, que debe ser realmente.

  

Para alfabetos no latinos como el ruso y hebreo, es que hay un método que pueda detectar el idioma del contenido pertenece y llevar a cabo un mecanismo de filtrado de spam apropiado?

Básico de Rusia se encuentra en el rango de Unicode U + 0400-U + 04FF; vocales son аэыуояеёюи. Hebreo está en el rango U + 0590-U + 05FF y no utiliza las vocales de la misma manera. No creo que la detección de las vocales es terriblemente útil ... es posible que tenga más suerte con un simple diccionario abarca muchos idiomas, siempre y cuando se apegue a las lenguas que tienen límites de las palabras claras. No sirve de mucho para el chino.

No creo que este tipo de cosas es un buen mecanismo anti-spam en absoluto. Es tan probable que falsos positivos, ya que es para detectar correo no deseado, que es después de todo, muy a menudo las palabras adecuadas. Diferentes campos alerón (entradas CSS-oculto que debe ser dejado en blanco, pero no será por los robots) y de un solo uso o fichas de presentación en tiempo limitado tienen muchas más probabilidades de ser eficaces.

Otros consejos

Se puede utilizar el normalizador para encontrar cadenas con caracteres acentuados :

<?
    if (! normalizer_is_normalized($input)) {
        // handle non-normalized input
    }
?>

Si es necesario, se podría también utilizar esta clase para normalizar las cuerdas vocales a buscar:

<?
    $norm = normalizer_normalize($input);
    if (! preg_match('/[aeiou]/', $norm)) {
        // handle no-vowels in input
    }
?>

También querrá leer acerca de la forma de normalización defecto y asegurarse de que satisface sus necesidades.

Hmm, personalmente no encuentro un filtro de correo no deseado como la suya demasiado eficaz. OMI es mucho mejor para ver los enlaces, palabras fuertes, y palabras relacionadas sexual / warez, correo no deseado a menudo ellos contienen. Se podría restringir el derecho commend sólo para usuarios registrados, y que podría eliminarlos como moderador antes de que aparezcan, si es que viene de confianza (= de usuario no registrado) fuente.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top