Deprecated: str_replace(): Passing null to parameter #3 ($subject) of type array|string is deprecated in /var/www/mybb-es.com/html/inc/plugins/avatarep.php on line 1102

Deprecated: str_replace(): Passing null to parameter #3 ($subject) of type array|string is deprecated in /var/www/mybb-es.com/html/inc/class_language.php on line 201
Hacer un plugin
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:

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?
Ú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í:

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

Código PHP:
<?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 "
Omar G.   17 Dec, 2012, 8:19 pm
#5
Quizás la expresión regular es lo incorrecto.
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.
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-2024 MyBB Group.
Made with by Curves UI.