Hacer un plugin
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 $pl...

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




Última modificación: 17 Dec, 2012, 1:41 pm por 1s44c.
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.
¿No se puede hacer esto con un MyCode?
Omar G.
Última modificación: 17 Dec, 2012, 7:15 pm por nicods_20055.
Steeep17 Dec, 2012, 5:47 pmSteeep 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é

Omar G.17 Dec, 2012, 7:15 pmOmar 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 "
Equipo de Desarrollo de Skylium Network




Quizás la expresión regular es lo incorrecto.
Omar G.
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.
Omar G.
Colaboradores
Omar G. HSSWebs
This forum uses Lukasz Tkacz MyBB addons.