Juliens   17 Dec, 2012, 1:41 pm
#1
Pues bueno, estaba tratando de hacer un plugin que use expresiones regulares pero no se como hacerlo.

La cosa es que tengo lo siguiente:

<?php
$plugins->add_hook('postbit', 'hideip');

function hideip_info()
{
    return array(
        "name"            => "hideip",
        "description"    => "Cambia una IP por otro texto",
        "website"        => "http://juliohurtado.com",
        "author"        => "Juliens",
        "authorsite"    => "http://juliohurtado.com",
        "version"        => "1.0",
        "compatibility" => "14*,16*",
    );
}
function hideip(&$post)
{
    global $mybb;

    $hideip_post= array(
        '\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b'        => ('tag que oculta la ip + ip'),
    );
    $post['message'] = str_replace(array_keys($hideip_post), array_values($hideip_post), $post['message']);
} 
	?>

El problema radica en lo siguiente:

En el post no me reconoce la expresión regular de la IP y que en todo caso no sabría como hacer para que la ip se reemplace por [hide]ip[/hide]

¿Me ayudan?
Última modificación: 17 Dec, 2012, 1:41 pm por 1s44c.
HSSWebs   17 Dec, 2012, 5:47 pm
#2
Lo que pasa es que la detección de la IP no las estas tratando con una expresión regular.
Cita:str_replace — Reemplaza todas las apariciones del string buscado con el string de reemplazo
Es decir que solo lo detectara & hará el reemplazo cuando se ingrese \b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b ya que en ese momento habrá una aparición.

Pero vamos que no todo es malo XD Big Grin

Lo que puedes hacer es usar preg_replace, creo que así:

$post['message'] = preg_replace("/^(([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]).){3}([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/", "REEMPLAZO AQUÍ", $post['message']);

Eso sería en lo que puedo ayudarte XD Que es lo que se me ocurre hasta ahora :p
Última modificación: 17 Dec, 2012, 5:47 pm por V1K1NGO.
Omar G.   17 Dec, 2012, 7:15 pm
#3
¿No se puede hacer esto con un MyCode?
Última modificación: 17 Dec, 2012, 7:15 pm por nicods_20055.

Envía un DM o MP si te interesa patrocinar alguna actualización o complemento a alguno de mis plugins.

[Imagen: signature.png]

Discord omar.gonzalez (Omar G.#6117); Telegram at @omarugc;
Juliens   17 Dec, 2012, 7:38 pm
#4
(17 Dec, 2012, 5:47 pm)Steeep escribió: Lo que pasa es que la detección de la IP no las estas tratando con una expresión regular.
Cita:str_replace — Reemplaza todas las apariciones del string buscado con el string de reemplazo
Es decir que solo lo detectara & hará el reemplazo cuando se ingrese \b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b ya que en ese momento habrá una aparición.

Pero vamos que no todo es malo XD Big Grin

Lo que puedes hacer es usar preg_replace, creo que así:

$post['message'] = preg_replace("/^(([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]).){3}([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/", "REEMPLAZO AQUÍ", $post['message']);

Eso sería en lo que puedo ayudarte XD Que es lo que se me ocurre hasta ahora :p

Lo intentaré

(17 Dec, 2012, 7:15 pm)Omar G. escribió: ¿No se puede hacer esto con un MyCode?

Lo hice y reconoce la expresión regular, pero no el parámetro que se le envía.

Es decir, si pongo reemplazar por "cualquier cosa $1" no me aparece la ip que se colocó, solamente "cualquier cosa "
Omar G.   17 Dec, 2012, 8:19 pm
#5
Quizás la expresión regular es lo incorrecto.

Envía un DM o MP si te interesa patrocinar alguna actualización o complemento a alguno de mis plugins.

[Imagen: signature.png]

Discord omar.gonzalez (Omar G.#6117); Telegram at @omarugc;
Juliens   17 Dec, 2012, 8:32 pm
#6
ES que entonces tampoco saldría "cualquier cosa"
Omar G.   17 Dec, 2012, 8:53 pm
#7
Ha ya veo, coloca $1$2$3$4$5$6$7, quizás tu expresion regular esta dividida. O encierra toda tu expresion regular en paréntesis (...) y entonces $1 debería funcionar.

Envía un DM o MP si te interesa patrocinar alguna actualización o complemento a alguno de mis plugins.

[Imagen: signature.png]

Discord omar.gonzalez (Omar G.#6117); Telegram at @omarugc;
Juliens   17 Dec, 2012, 9:00 pm
#8
Con los paréntesis funciona, pero al citar/edita aparece solo la IP

Yo lo que quería es que cuando meta una ip, se le agregue la etiqueta que oculta información
  
Powered By MyBB, © 2002-2025 MyBB Group.
Made with by Curves UI.