11
Ayuda scripting IRcap / Re:Antispam
« Último mensaje por Quetzalcoatl en Marzo 29, 2021, 08:38:05 pm »el problema es el acento rayco
quizás sea un bug en el mirc, ya que cualquier palabra acentuada la esta tomando, es que contiene una buscada en el regex, o quizás esta mal la implementacion, no soy tan experto en expresiones regulares(https://es.wikipedia.org/wiki/Expresi%C3%B3n_regular), pero si me han facilitado muchas cosas. quizás alguien que si sea experto podría encontrar la solución a ello o se puede poner un while o wildtok,instok,etc para el chequeo, lo que impilicaria meter bucles para cada palabra y/o meter un filtro para que no metan caracteres especiales, que siendo los acentos se toman como caracteres especiales, y lo mas probable es que suceda lo mismo, lo anterior dicho se puede comprobar con:
//var %a comí | if ($regex($strip(%a),/\b(?:http|www|com|org|net)\b/i)) { echo -a detectado }
//var %a comi | if ($regex($strip(%a),/\b(?:http|www|com|org|net)\b/i)) { echo -a detectado }
//var %a comií | if ($regex($strip(%a),/\b(?:http|www|com|org|net)\b/i)) { echo -a detectado }
lo que se puede hacer es un tokenize para poner en minúsculas y usar un replace, por que es mas fácil poner los replaces de un carácter en especifico que usar uno para mayúsculas y otro minúsculas, según la tabla ascii, o que estar agregando excepciones por cada wwwá,wwwé..... sucesivamente hasta............ netú --> http|www|com|org|net
á => ASCII: 225 Octal: \341 HEX: \xE1
é => ASCII: 233 Octal: \351 HEX: \xE9
í => ASCII: 237 Octal: \355 HEX: \xED
ó => ASCII: 243 Octal: \363 HEX: \xF3
ú => ASCII: 250 Octal: \372 HEX: \xFA
Una ves explicado el punto, seria cuestión de agregar una linea que nos haga el trabajo sucio de los acentos
Probando el tokenize individualmente
nos da como resultado:
*variable%a* holá ¿cómo estÁs tú? **remplazo** -- hola ¿como estas tu?
Sin más por el momento.
quizás sea un bug en el mirc, ya que cualquier palabra acentuada la esta tomando, es que contiene una buscada en el regex, o quizás esta mal la implementacion, no soy tan experto en expresiones regulares(https://es.wikipedia.org/wiki/Expresi%C3%B3n_regular), pero si me han facilitado muchas cosas. quizás alguien que si sea experto podría encontrar la solución a ello o se puede poner un while o wildtok,instok,etc para el chequeo, lo que impilicaria meter bucles para cada palabra y/o meter un filtro para que no metan caracteres especiales, que siendo los acentos se toman como caracteres especiales, y lo mas probable es que suceda lo mismo, lo anterior dicho se puede comprobar con:
//var %a comí | if ($regex($strip(%a),/\b(?:http|www|com|org|net)\b/i)) { echo -a detectado }
//var %a comi | if ($regex($strip(%a),/\b(?:http|www|com|org|net)\b/i)) { echo -a detectado }
//var %a comií | if ($regex($strip(%a),/\b(?:http|www|com|org|net)\b/i)) { echo -a detectado }
lo que se puede hacer es un tokenize para poner en minúsculas y usar un replace, por que es mas fácil poner los replaces de un carácter en especifico que usar uno para mayúsculas y otro minúsculas, según la tabla ascii, o que estar agregando excepciones por cada wwwá,wwwé..... sucesivamente hasta............ netú --> http|www|com|org|net
á => ASCII: 225 Octal: \341 HEX: \xE1
é => ASCII: 233 Octal: \351 HEX: \xE9
í => ASCII: 237 Octal: \355 HEX: \xED
ó => ASCII: 243 Octal: \363 HEX: \xF3
ú => ASCII: 250 Octal: \372 HEX: \xFA
Una ves explicado el punto, seria cuestión de agregar una linea que nos haga el trabajo sucio de los acentos
Código: [Seleccionar]
tokenize 32 $replace($lower($1-),$chr(225),a,$chr(233),e,$chr(237),i,$chr(243),o,$chr(250),u)
el cual debe ser agregado después de la linea que contiene Código: [Seleccionar]
if (!$nick(#,$nick,r)) { return }
Probando el tokenize individualmente
Código: [Seleccionar]
//var %a holá ¿cómo estÁs tú? | tokenize 32 $replace($lower(%a),$chr(225),a,$chr(233),e,$chr(237),i,$chr(243),o,$chr(250),u) | echo -a *variable%a* %a **remplazo** -- $1-
nos da como resultado:
*variable%a* holá ¿cómo estÁs tú? **remplazo** -- hola ¿como estas tu?
Sin más por el momento.