Foros del Web » Programando para Internet » PHP »

Notice: Undefined index: $1

Estas en el tema de Notice: Undefined index: $1 en el foro de PHP en Foros del Web. Tengo un pequeño problema, en un BBCode casero he hecho que la sustitucion de un TAG sea la llamada una funcion enviando el texto obtenido ...
  #1 (permalink)  
Antiguo 23/01/2011, 19:30
Avatar de bNd170  
Fecha de Ingreso: agosto-2009
Ubicación: $this->setLocation('Valencia', 'Spain');
Mensajes: 365
Antigüedad: 14 años, 7 meses
Puntos: 13
Notice: Undefined index: $1

Tengo un pequeño problema, en un BBCode casero he hecho que la sustitucion de un TAG sea la llamada una funcion enviando el texto obtenido del texto, al mostrarlo funciona pero al buscar dicho texto en un vector me salta el error.

Mi pregunta es, hay alguna forma de que a la funcion le llegue internamente el texto obtenido y no $1?
  #2 (permalink)  
Antiguo 23/01/2011, 21:04
 
Fecha de Ingreso: octubre-2009
Mensajes: 245
Antigüedad: 14 años, 6 meses
Puntos: 17
Respuesta: Notice: Undefined index: $1

No seria mejor si intentas usar la extension para bbcode que implementa php ?
te dejo la liga al manual, espero que te sirva de ayuda
__________________
Saludos.
  #3 (permalink)  
Antiguo 23/01/2011, 21:10
Avatar de bNd170  
Fecha de Ingreso: agosto-2009
Ubicación: $this->setLocation('Valencia', 'Spain');
Mensajes: 365
Antigüedad: 14 años, 7 meses
Puntos: 13
Respuesta: Notice: Undefined index: $1

Es tarde, ahora no puedo mirarme esas funciones aunque lo veo excesivo para un problema tan diminuto.

El BBCode es [f]codigo[/f], ese codigo que son dos letras, las capturo mediante un:
Código PHP:
Ver original
  1. "/\[f\](.*?)\[\/f\]/is"

Luego ese parametro lo envio a una funcion que lo envia a otra y esta ultima busca ese codigo en un array, al buscarlo el PHP me salta diciendome que efectivamente no hay una posicion en el array con valor $1 o \1.

Mi conclusion es que dichas variables solo sirven para imprimir informacion, no para manejarla mediante funciones.

La pregunta es, hay alguna funcion que capte el valor de las variables de preg_replace?
  #4 (permalink)  
Antiguo 23/01/2011, 21:29
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Notice: Undefined index: $1

pero claro, existe preg_match()

te invito a leer lo siguiente:
http://www.forosdelweb.com/f18/aport...s-pcre-646110/
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 23/01/2011, 21:33
Avatar de bNd170  
Fecha de Ingreso: agosto-2009
Ubicación: $this->setLocation('Valencia', 'Spain');
Mensajes: 365
Antigüedad: 14 años, 7 meses
Puntos: 13
Respuesta: Notice: Undefined index: $1

Conozco preg_match().

Uso con mucha frecuencia expresiones regulares pero en este caso no se salir del hoyo.
Código PHP:
Ver original
  1. $codigo = preg_replace($a, $b, $codigo);
en $a tengo los codigos BBcode (Tags), en $b tengo sus equivalencias en XHTML, como hago para que una variable de preg_replace(); la tome el PHP como variable normal.


Al hacer lo siguiente me salta error:
Código PHP:
Ver original
  1. "<img src='../images/web/$1.gif' title='".$array['\1']."'>",
  #6 (permalink)  
Antiguo 23/01/2011, 21:54
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Notice: Undefined index: $1

usa preg_replace_callback(), o bien el modificador de evaluación para ejecutar código, revisa el manual...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 23/01/2011, 22:20
Avatar de bNd170  
Fecha de Ingreso: agosto-2009
Ubicación: $this->setLocation('Valencia', 'Spain');
Mensajes: 365
Antigüedad: 14 años, 7 meses
Puntos: 13
Respuesta: Notice: Undefined index: $1

utilizé /e pero me sale otro error, mañana compruebo con mas detenimiento, gracias.
  #8 (permalink)  
Antiguo 23/01/2011, 23:34
Avatar de Artificium  
Fecha de Ingreso: enero-2011
Mensajes: 492
Antigüedad: 13 años, 3 meses
Puntos: 81
Respuesta: Notice: Undefined index: $1

Error? consideras que el mensaje que se muestra es un error? yo no veo por ninguna parte un error, yo veo un notice. Y si quieres que no se vea pues, cambiale la configuración: esta link te mostrará como hacerlo:

http://soporte.miarroba.es/17451/1380146-como-saco-los-notice-del-php/
  #9 (permalink)  
Antiguo 24/01/2011, 01:11
Avatar de bNd170  
Fecha de Ingreso: agosto-2009
Ubicación: $this->setLocation('Valencia', 'Spain');
Mensajes: 365
Antigüedad: 14 años, 7 meses
Puntos: 13
Respuesta: Notice: Undefined index: $1

La programación basura no la quiero, si el PHP salta con error o noticie es porque algo no funciona correctamente.

Si tu trabajas así me parece estupendo, no comparto esa temática de trabajo.
  #10 (permalink)  
Antiguo 24/01/2011, 01:46
 
Fecha de Ingreso: octubre-2009
Mensajes: 245
Antigüedad: 14 años, 6 meses
Puntos: 17
Respuesta: Notice: Undefined index: $1

El error marca por que las variables $1...$n son solo en el contexto de la funcion, ahora si lo que quieres hacer es remplazar el contenido de tu bbcode con su correspondiente representacion en HTML lo unico que tenias que hacer es lo siguiente:

Código PHP:
Ver original
  1. function bbcode ($bbstring) {
  2.    $search = array(
  3.        '/[b\](.*?)\[\/b\]/is',
  4.        '/[i\](.*?)\[\/i\]/is',
  5.        '/[u\](.*?)\[\/u\]/is',
  6.        '/[img\](.*?)\[\/img\]/is',
  7.        '/[url\=(.*?)\](.*?)\[\/url\]/is',
  8.        '/[code\](.*?)\[\/code/]/is'
  9.    );
  10.    $replace = array(
  11.        '<b>\\1</b>',
  12.        '<i>\\1</i>',
  13.        '<u>\\1</u>',
  14.        '<img src="\\1">',
  15.        '<a href="\\1">\\2</a>',
  16.        '<code>\\1</code>'
  17.    );
  18.    return preg_replace($search, $replace, $bbstring);
  19. }

espero que te sea de ayuda.
__________________
Saludos.
  #11 (permalink)  
Antiguo 24/01/2011, 01:57
Avatar de bNd170  
Fecha de Ingreso: agosto-2009
Ubicación: $this->setLocation('Valencia', 'Spain');
Mensajes: 365
Antigüedad: 14 años, 7 meses
Puntos: 13
Respuesta: Notice: Undefined index: $1

pateketrueke, mil gracis, le di mil vueltas al asunto y porfin lo he sacado.
  #12 (permalink)  
Antiguo 24/01/2011, 09:53
Avatar de Artificium  
Fecha de Ingreso: enero-2011
Mensajes: 492
Antigüedad: 13 años, 3 meses
Puntos: 81
Respuesta: Notice: Undefined index: $1

Cita:
Iniciado por bNd170 Ver Mensaje
La programación basura no la quiero, si el PHP salta con error o noticie es porque algo no funciona correctamente.

Si tu trabajas así me parece estupendo, no comparto esa temática de trabajo.
En ese caso no programes con PHP. Eso esa es la razón por la cual precisamente a muchos no les gusta PHP: ser tan permisivo. No es que a mi me guste trabajar así o no lo que sucede es que PHP es así. A ver, tú debes ser programador y por lo tanto debes saber que no es lo mismo un warning que un error. Ok, en PHP a parte de esos dos existe el Notice, y qué es eso? es uno de esos "errores" que no hacen absolutamente nada, que no crean ningún inconveniente. Sirven (si que crees que te sirven) para no ser tan estricto en la programación. Por defecto en cualquier servidor no se muestran esos notice, pero sí aparecen por defecto cuando instalas wamp2, la versión de su PHP muestra los notice. Personalmente prefiero trabajar con un lenguaje más estricto como Java. Pero afrontémoslo, PHP es así.

Última edición por Artificium; 24/01/2011 a las 19:44
  #13 (permalink)  
Antiguo 26/01/2011, 23:02
Avatar de bNd170  
Fecha de Ingreso: agosto-2009
Ubicación: $this->setLocation('Valencia', 'Spain');
Mensajes: 365
Antigüedad: 14 años, 7 meses
Puntos: 13
Respuesta: Notice: Undefined index: $1

JaimeSavines, gracias, función tengo una mía propia hecha desde 0, el problema era otro.

Artificium, si el PHP salta, sea Warning, Error o Notice es porque algo que el compilador ha procesado es incorrecto, si la programación me gusta es porque requiere en cierta medida algo de perfección y de echo, siempre que trabajo con PHP activo todos los mensajes que me lanze cuando algo esté mal.

Me acostumbre a programar en C++ desde bien pequeño y ese es un lenguaje que, si no conoces, salta el compilador si no esta todo perfectamente.

De todos modos, en este caso, el Notice sí impedia la correcta funcionalidad del codigo ya que me estaba avisando de que el array de los nombres de los paises carecia de una posicion que yo creia que estaba mandandole bien a la funcion, gracias a pateketrueke pude solventar el problema.
  #14 (permalink)  
Antiguo 28/01/2011, 10:47
Avatar de Artificium  
Fecha de Ingreso: enero-2011
Mensajes: 492
Antigüedad: 13 años, 3 meses
Puntos: 81
Respuesta: Notice: Undefined index: $1

Cita:
Artificium, si el PHP salta, sea Warning, Error o Notice es porque algo que el compilador ha procesado es incorrecto, si la programación me gusta es porque requiere en cierta medida algo de perfección y de echo, siempre que trabajo con PHP activo todos los mensajes que me lanze cuando algo esté mal.
No haz entendido bien? PHP salta Notice y Warning, pero el Warning si tiene efectos porque por ejemplo no encuentra un archivo, pero no se detiene la ejecusión, pero como no encuentra el archivo no va a hacer lo que se esperaba. El Error si lo detiene. Y Notices, pues no suele hacer ningún efecto negativo en tu código, al menos eso es lo que PHP presupone, por eso el Notice suele estar desactivado en los hostings, pero los Error y Warning si que se muestran.

Si tú eres muy riguroso activa los Notice y corrige cada cosita. Eso es bueno, particularmente yo dejé de hacer sistemas web empresariales precisamente por ese tipo de cosas que tiene PHP.

Etiquetas: index, undefined
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:02.