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:

Código PHP:
<?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í:

Código PHP:
$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.
(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í:

Código PHP:
$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 "
Equipo de Desarrollo de Skylium Network




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.
{SIGNATURE_IMAGE}