Foros del Web » Programando para Internet » PHP »

Sustituir una cadena sólo si está dentro de otra cadena

Estas en el tema de Sustituir una cadena sólo si está dentro de otra cadena en el foro de PHP en Foros del Web. Buenas, No se como preguntarlo y quizás por ello tampoco lo esté buscando bien. Pero allí va. Un cliente pega unos textos en sus fichas ...
  #1 (permalink)  
Antiguo 23/10/2012, 10:08
 
Fecha de Ingreso: enero-2007
Mensajes: 19
Antigüedad: 17 años, 10 meses
Puntos: 0
Sustituir una cadena sólo si está dentro de otra cadena

Buenas,
No se como preguntarlo y quizás por ello tampoco lo esté buscando bien.
Pero allí va.

Un cliente pega unos textos en sus fichas y lo hace mal. Quiere que depure yo las cosas.
El pega un texto con saltos de línea \n y yo debo sustituirlos por <br>
Sería fácil usar nl2br() si no fuese por que el en realidad copia y pega esto:

<div>
\n\n\n\n\n
<table><tr><td>
\n\n\n\n\n
palabras
\n\n\n
mas palabras
</td></tr></table>
</div>

Todo esto es mi cadena de texto.

Si sistituyo con nl2br() antes de la tabla se ponen un montón de br que quedan mal.
La idea es sustituir sólo los \n que están dentro de la tabla.
Había pensado preguntar si preg_match puede hacer que se sistituya \n si está dentro de la tabla, pero no se como.
¿alguna idea mejor?

Muchas gracas
  #2 (permalink)  
Antiguo 23/10/2012, 15:32
 
Fecha de Ingreso: enero-2012
Mensajes: 49
Antigüedad: 12 años, 10 meses
Puntos: 4
Respuesta: Sustituir una cadena sólo si está dentro de otra cadena

La forma en que yo haría esa tarea es dividirla en dos pasos:

Primero me quedo con el texto que realmente quiero transformar, en tu caso lo que hay entre <table> y </table>
Segundo buscar los \n dentro de ese texto y transformarlo a <br />

Te pongo un par de links para que puedas hacer esto:

strrpos -> Devuelve la posición de un texto dentro de una cadena
substr -> Devuelve una parte de una cadena.

Probablemente existe una manera de hacerla con expresiones regulares, pero yo no las domino... si hay alguien que sepa que te conteste...

Si te surge alguna duda más concreta nos comentas ;)
  #3 (permalink)  
Antiguo 24/10/2012, 08:08
 
Fecha de Ingreso: enero-2007
Mensajes: 19
Antigüedad: 17 años, 10 meses
Puntos: 0
Respuesta: Sustituir una cadena sólo si está dentro de otra cadena

Muchas gracias Uran, así lo he hecho.
Las expresiones regulares se supone que son más rápidas, pero mejor el método clásico que nada. ;)
  #4 (permalink)  
Antiguo 24/10/2012, 11:39
 
Fecha de Ingreso: enero-2012
Mensajes: 49
Antigüedad: 12 años, 10 meses
Puntos: 4
Respuesta: Sustituir una cadena sólo si está dentro de otra cadena

Hehe cierto, me alegro. A ver si alguien se anima y escribe una forma con expresiones regulares...

Etiquetas: sustituir, tabla, cadenas
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 07:09.