Foros del Web » Programando para Internet » PHP »

Error con str_replace

Estas en el tema de Error con str_replace en el foro de PHP en Foros del Web. Buenas a todos, estoy haciendo unas modificaciones en un foro SMF, para añadir unos bbcodes propios. Resulta que el editor del SMF, mete saltos de ...
  #1 (permalink)  
Antiguo 17/11/2010, 03:04
Avatar de yournightmare86  
Fecha de Ingreso: abril-2006
Ubicación: Madrid
Mensajes: 875
Antigüedad: 18 años
Puntos: 9
Error con str_replace

Buenas a todos,

estoy haciendo unas modificaciones en un foro SMF, para añadir unos bbcodes propios. Resulta que el editor del SMF, mete saltos de líneas, y espacios. Recojo todo en una variable $data, y comienza a hacer str_replace de lo que quiero reemplazar, pero resulta que cuando voy a reemplazar todos los   , solo me reemplaza algunos. No consigo comprender que ocurre, a ver si me echan una mano, porque no veo donde está el error.

Antes de hacer replace tengo esto:
Código:
[Event "Grand Slam Final Masters"]
[Site "Bilbao ESP"]
[Date "2010.10.14"]
[Round "5"]
[White "Carlsen, Magnus"]
[Black "Shirov, Alexei"]
[Result "1-0"]
[WhiteElo "2826"]
[BlackElo "2749"]
[ECO "C78"]
[EventDate "2010.10.09"]
[WhiteTitle "GM"]
[BlackTitle "GM"]
[Opening "Ruy Lopez"]
[Annotator "IM Gonzalez de la Torre"]  1.e4 e5 2.Nf3 Nc6 3.Bb5 a6 4.Ba4 
Nf6 5.O-O b5 6.Bb3 Bc5 {La variante  Moller, una de las especialidades 
de Shirov} 7.a4 {Esta variante  secundaria está siendo muy popular entre 
los jugadores de élite}      ( {La línea principal era} 7.c3 d6
 {Y ahora el blanco debe elegir      entre dos jugadas}
 8.a4          ( 8.d4 )    
Aplicando esto:
Código:
$data = str_replace(" ", "", $data);
Obtengo esto:

Código:
[Event "Grand Slam Final Masters"]
[Site "Bilbao ESP"]
[Date "2010.10.14"]
[Round "5"]
[White "Carlsen, Magnus"]
[Black "Shirov, Alexei"] 
[Result "1-0"]
[WhiteElo "2826"]
[BlackElo "2749"]
[ECO "C78"]
[EventDate "2010.10.09"]
[WhiteTitle "GM"]
[BlackTitle "GM"]
[Opening "Ruy Lopez"]
[Annotator "IM Gonzalez de la Torre"]  1.e4 e5 2.Nf3 Nc6 3.Bb5 a6 4.Ba4
 Nf6 5.O-O b5 6.Bb3 Bc5 {La variante  Moller, una de las especialidades 
 de Shirov} 7.a4 {Esta variante  secundaria está siendo muy popular entre
 los jugadores de élite}    ( {La línea principal era} 7.c3 d6 {Y 
 ahora el blanco debe elegir    entre dos jugadas} 
 8.a4      ( 8.d4 )   )
Se han reemplazado algunos, pero no todos. ¿Alguna idea de cual puede ser el problema?

Muchas gracias, un saludo.
  #2 (permalink)  
Antiguo 17/11/2010, 04:07
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Error con str_replace

la función no tiene problemas, reemplaza lo que que es... osea, el error que tienes es por el texto...

quizá lo que ves a través del navegador es un   y por eso que crees que aún no lo reemplaza, porque un lenguaje de programación no se equivoca... ¿y tu?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 17/11/2010, 04:14
Avatar de yournightmare86  
Fecha de Ingreso: abril-2006
Ubicación: Madrid
Mensajes: 875
Antigüedad: 18 años
Puntos: 9
Respuesta: Error con str_replace

El texto que he puesto, es el que me aparece en el código fuente, NO en el navegador.
  #4 (permalink)  
Antiguo 17/11/2010, 09:55
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Error con str_replace

Cita:
Iniciado por yournightmare86 Ver Mensaje
El texto que he puesto, es el que me aparece en el código fuente, NO en el navegador.
pues entonces tienes graves problemas, porque tu error no es de código...

vamos, que str_replace() funciona tal cual... ¿no estarías omitiendo algo?

te invito a mostrar tu código completo donde realizas dicho reemplazo, por que suena imposible, casi absurdo que no te funcione algo tan básico!!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 17/11/2010, 12:05
Avatar de yournightmare86  
Fecha de Ingreso: abril-2006
Ubicación: Madrid
Mensajes: 875
Antigüedad: 18 años
Puntos: 9
Respuesta: Error con str_replace

Claro que lo enseño, como no, pensaba que era que estaba ofuscado y estaba pasando por alto algo elemental. Mira te muestro la siguiente cadena, que es la que trato en la función, así sería sin aplicarle nada:

Código:
[Event &quot;Grand Slam Final Masters&quot;]<br />
[Site &quot;Bilbao ESP&quot;]<br />
[Date &quot;2010.10.14&quot;]<br />
[Round &quot;5&quot;]<br />
[White &quot;Carlsen, Magnus&quot;]<br />
[Black &quot;Shirov, Alexei&quot;]<br />
[Result &quot;1-0&quot;]<br />
[WhiteElo &quot;2826&quot;]<br />
[BlackElo &quot;2749&quot;]<br />
[ECO &quot;C78&quot;]<br />
[EventDate &quot;2010.10.09&quot;]<br />
[WhiteTitle &quot;GM&quot;]<br />
[BlackTitle &quot;GM&quot;]<br />
[Opening &quot;Ruy Lopez&quot;]<br />
[Annotator &quot;IM Gonzalez de la Torre&quot;]<br /><br />
1.e4 e5 2.Nf3 Nc6 3.Bb5 a6 4.Ba4 Nf6 5.O-O b5 6.Bb3 Bc5 {La variante <br />Moller,
 una de las especialidades de Shirov} 7.a4 {Esta variante <br />secundaria está 
 siendo muy popular entre los jugadores de élite} <br />&nbsp;&nbsp; &nbsp;( 
 {La línea principal era} 7.c3 d6 {Y ahora el blanco debe elegir <br />&nbsp;&nbsp;
 &nbsp;entre dos jugadas} 8.a4 <br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;( 8.d4 )<br />
 &nbsp;&nbsp; &nbsp;)<br />7...Rb8 8.axb5 axb5 9.c3 d6 10.d4 Bb6 11.h3!? {Parece muy
 lógica, aunque <br />no es muy popular} <br />&nbsp;&nbsp; &nbsp;( 11.Bg5 {Es la más 
 jugada} )<br />&nbsp;&nbsp; &nbsp;( 11.Qd3 {Es otra jugada interesante} )<br />11...O-O
 12.Re1 h6 {Tras una larga reflexión, Shirov se desvía de varias <br />partidas previas
 suyas. El negro gasta un tiempo entero en prevenir la <br />jugada Ag5} <br />&nbsp;&nbsp;
 &nbsp;( 12...Bb7 {Es la jugada que
Quiero quitar los <br /> por un espacio, reemplazar &quot; por " y eliminar todo tipo de &nbsp;

Tengo lo siguiente para hacerlo:
Código:
$data = str_replace("<br />", " ", $data);
$data = str_replace("&quot;", "\"", $data);
$data = strip_tags($data);
$data = str_replace("&nbsp;", "", $data);
Y consigo lo que puse arriba, he abreviado por no saturar:
Código:
[Event "Grand Slam Final Masters"]
[Site "Bilbao ESP"]
[Date "2010.10.14"]
[Round "5"]
[White "Carlsen, Magnus"]
[Black "Shirov, Alexei"] 
[Result "1-0"]
[WhiteElo "2826"]
[BlackElo "2749"]
[ECO "C78"]
[EventDate "2010.10.09"]
[WhiteTitle "GM"]
[BlackTitle "GM"]
[Opening "Ruy Lopez"]
[Annotator "IM Gonzalez de la Torre"] &nbsp;1.e4 e5 2.Nf3 Nc6 3.Bb5 a6 4.Ba4
 Nf6 5.O-O b5 6.Bb3 Bc5 {La variante &nbsp;Moller, una de las especialidades 
 de Shirov} 7.a4 {Esta variante &nbsp;secundaria está siendo muy popular entre
 los jugadores de élite} &nbsp; &nbsp;( {La línea principal era} 7.c3 d6 {Y 
 ahora el blanco debe elegir &nbsp; &nbsp;entre dos jugadas} 
 8.a4 &nbsp; &nbsp; &nbsp;( 8.d4 ) &nbsp; )
Muchas gracias por tu atención, no consigo ver nada, un saludo.
  #6 (permalink)  
Antiguo 18/11/2010, 07:26
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Error con str_replace

pues mira, yo he probado el script y no tengo ningún problema...

como ya te he dicho, la función hace lo que es... sirve para reemplazar, no hay argumentos para que no haga lo que le dices...
Código PHP:
<pre><?php
$data 
= <<<HTML
[Event &quot;Grand Slam Final Masters&quot;]<br />
[Site &quot;Bilbao ESP&quot;]<br />
[Date &quot;2010.10.14&quot;]<br />
[Round &quot;5&quot;]<br />
[White &quot;Carlsen, Magnus&quot;]<br />
[Black &quot;Shirov, Alexei&quot;]<br />
[Result &quot;1-0&quot;]<br />
[WhiteElo &quot;2826&quot;]<br />
[BlackElo &quot;2749&quot;]<br />
[ECO &quot;C78&quot;]<br />
[EventDate &quot;2010.10.09&quot;]<br />
[WhiteTitle &quot;GM&quot;]<br />
[BlackTitle &quot;GM&quot;]<br />
[Opening &quot;Ruy Lopez&quot;]<br />
[Annotator &quot;IM Gonzalez de la Torre&quot;]<br /><br />
1.e4 e5 2.Nf3 Nc6 3.Bb5 a6 4.Ba4 Nf6 5.O-O b5 6.Bb3 Bc5 {La variante <br />Moller,
 una de las especialidades de Shirov} 7.a4 {Esta variante <br />secundaria está 
 siendo muy popular entre los jugadores de élite} <br />&nbsp;&nbsp; &nbsp;( 
 {La línea principal era} 7.c3 d6 {Y ahora el blanco debe elegir <br />&nbsp;&nbsp;
 &nbsp;entre dos jugadas} 8.a4 <br />&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;( 8.d4 )<br />
 &nbsp;&nbsp; &nbsp;)<br />7...Rb8 8.axb5 axb5 9.c3 d6 10.d4 Bb6 11.h3!? {Parece muy
 lógica, aunque <br />no es muy popular} <br />&nbsp;&nbsp; &nbsp;( 11.Bg5 {Es la más 
 jugada} )<br />&nbsp;&nbsp; &nbsp;( 11.Qd3 {Es otra jugada interesante} )<br />11...O-O
 12.Re1 h6 {Tras una larga reflexión, Shirov se desvía de varias <br />partidas previas
 suyas. El negro gasta un tiempo entero en prevenir la <br />jugada Ag5} <br />&nbsp;&nbsp;
 &nbsp;( 12...Bb7 {Es la jugada que
HTML;
$data str_replace("<br />"" "$data);
$data str_replace("&quot;""\""$data);
$data strip_tags($data);
$data str_replace("&nbsp;"""$data);
echo 
htmlspecialchars($data);
?></pre>
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 18/11/2010, 08:57
 
Fecha de Ingreso: octubre-2010
Mensajes: 156
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: Error con str_replace

podira ser por la version de php del servidor?
  #8 (permalink)  
Antiguo 18/11/2010, 09:02
Avatar de yournightmare86  
Fecha de Ingreso: abril-2006
Ubicación: Madrid
Mensajes: 875
Antigüedad: 18 años
Puntos: 9
Respuesta: Error con str_replace

Pues no sé, algo se debe ejecutar después en el SMF, no sabría decirte. Simplemente he programado un bbcode, y le he puesto una función validate dentro del archivo subs.php. Seguiré mirando.

Muchas gracias, un saludo.

Etiquetas: Ninguno
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 00:23.