Deprecated: explode(): Passing null to parameter #2 ($string) of type string is deprecated in /var/www/mybb-es.com/html/inc/functions.php on line 7422
Hacer un plugin - MyBB-Es.com
Contrata servicios web en ougcNetwork.
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?
Equipo de Desarrollo de Skylium Network


[Image: PROMO-DOMINIO.png]



Lo que pasa es que la detección de la IP no las estas tratando con una expresión regular.
Quote: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
¿No se puede hacer esto con un MyCode?
Envía un DM o MP si te interesa patrocinar alguna actualización o complemento a alguno de mis plugins.

[Image: signature.png]


Discord omar.gonzalez (Omar G.#6117); Telegram at @omarugc;
17 Dec, 2012, 5:47 pm Steeep wrote:
Lo que pasa es que la detección de la IP no las estas tratando con una expresión regular.
Quote: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. wrote:
¿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 "
Equipo de Desarrollo de Skylium Network


[Image: PROMO-DOMINIO.png]



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.

[Image: signature.png]


Discord omar.gonzalez (Omar G.#6117); Telegram at @omarugc;
ES que entonces tampoco saldría "cualquier cosa"
Equipo de Desarrollo de Skylium Network


[Image: PROMO-DOMINIO.png]



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.

[Image: signature.png]


Discord omar.gonzalez (Omar G.#6117); Telegram at @omarugc;
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
Equipo de Desarrollo de Skylium Network


[Image: PROMO-DOMINIO.png]