PHP - Reemplazar "strings" diferentes (múltiples)

   
Vista:

Reemplazar "strings" diferentes (múltiples)

Publicado por Margarita (6 intervenciones) el 27/01/2016 23:28:40
Hola a todos:
Necesito reemplazar en un texto diferentes palabras marcadas que me devuelvan en espacios. Es para un test.
de aproximadamente 100 palabras diferentes.

Por ejemplo:

1) Los patitos #nadan* en el lago.
Debe darme:
2) Los patitos ________ en el lago.

He intentado con
1
2
3
4
$text = " Los patitos #nadan* en el lago.";
$text = str_replace("#", "---", $text);
$text = str_replace("*", "---", $text);
echo $text;

Resultado: "Los patitos ---nadan--- en el lago."

Necesito hacer una función?
Si alguien me da una ayuda?
Saludos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Reemplazar "strings" diferentes (múltiples)

Publicado por DAVID (129 intervenciones) el 28/01/2016 07:51:33
Hola Margarita,
necesitas hacer varias cosas:
1.-por un lado tendrás que buscar la posición del caracter # en la cadena,
2.-por otro lado tienes que buscar la posición del caracter * en la cadena,
y una vez que tengas eso,
3.- debes remplazar la cadena que va desde la posición primera(la del #), hasta la de la segunda(*), por lo que tu quieres, que es _ tantas veces como posicion2-posicion1.

Con eso lo tendrías,

Un saludo
David,estudio de diseño grafico
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Reemplazar "strings" diferentes (múltiples)

Publicado por Margarita (6 intervenciones) el 28/01/2016 08:35:25
Gracias, pero no todas las palabras son iguales ... Cuáles son las funciones de PHP, en vez del "str_replace"?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Reemplazar "strings" diferentes (múltiples)

Publicado por DAVID (129 intervenciones) el 28/01/2016 08:42:39
pero todas las palabras que quieres sustituir empiezan por # y terminan por *, no?
pues con lo que te he puesto lo tendrías.
Para buscar la posición de un carácter en una cadena usa strpos .
Para sacar la subcadena usa substr
y despues usa str_replace para cambiar la subcadena por lo que tu necesitas.

Un saludo
David, estudio de diseño grafico
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Reemplazar "strings" diferentes (múltiples)

Publicado por Margarita (6 intervenciones) el 28/01/2016 09:06:38
David, muchas gracias. Esa si es una buena pista. Me pondré manos a la obra. En caso de no funcionar me comunico nuevamente. Nuevamente gracias por la ayuda
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Reemplazar "strings" diferentes (múltiples)

Publicado por Margarita (6 intervenciones) el 29/01/2016 21:30:01
Estimado David: Estoy que "sudo la gota gorda" con el script. Mira hice lo siguiente:
1) busqué la posición de # y luego para sacar la posición de terminar la palabra marcada.
2) Usé un bucle, pero me lo repite y me saca también los limitadores de palabra (# *), que quiero eliminar.
3) Pongo el resultado. Si pudieras darle un vistazo, o corrgirlo, te lo agradecería.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
$text = ("Los patos #nadan* en el agua.");
$x = 0;
$treffer1 = strtok ($text, '#');
echo "Nro. 1:".$treffer1;
echo "<br>";
while ( $treffer1 )
{
  $x++;
  $treffer1 = strpos($text, "#",1);
  $treffer1 = strtok('* ');
  $treffer2=str_replace($treffer1,"__________",$text);
  echo '<br>';
 echo $treffer2;
}
?>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Reemplazar "strings" diferentes (múltiples)

Publicado por DAVID (129 intervenciones) el 01/02/2016 10:22:11
Hola Margarita,
en cuanto tenga un minuto lo pruebo y te mando el código. Es que ahora me pillas con varios frentes abiertos, pero en cuanto pueda, lo miro,

Un saludo
David, estudio de diseño grafico
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Reemplazar "strings" diferentes (múltiples)

Publicado por Margarita (6 intervenciones) el 01/02/2016 14:49:41
David, muchas gracias funciona ... Muchas gracias ...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Reemplazar "strings" diferentes (múltiples)

Publicado por Jose Antonio joseant@weboculta.com (10 intervenciones) el 01/02/2016 10:39:18
La forma más adecuada es usar las expresiones regulables.

http://php.net/manual/en/function.preg-replace.php

Si tienes dudas o necesitas más ayuda preguntame: skype:weboculta
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Reemplazar "strings" diferentes (múltiples)

Publicado por DAVID (129 intervenciones) el 01/02/2016 10:52:18
Hola Margarita,
aqui te mando un ejemplo hecho:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
$text = ("Los patos #nadan* en el agua.");
$pos1=strpos ($text,'#');
$pos2=strpos ($text,'*');
$sub=substr($text, $pos1,$pos2-$pos1+1);
echo $text;
echo "<br>";
echo "pos1: ".$pos1;
echo "<br>";
echo "pos2: ".$pos2;
echo "<br>";
echo "sub: ".$sub;
echo "<br>";
$cadena=substr_replace($text,'_________',$pos1,$pos2-$pos1+1);
echo "cadena: ".$cadena;
echo "<br>";
?>

Y lo que dice Jose Antonio, es la verdad, tiene toda la razón, pero es que yo me vuelvo loco con las expresiones regulares.

Un saludo
David, estudio de diseño grafico
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Reemplazar "strings" diferentes (múltiples)

Publicado por Jose Antonio (10 intervenciones) el 01/02/2016 11:08:04
No es dificil, os pongo el resultado:

1
2
3
4
5
6
<?php
$string = 'Los patos #nadan* en el agua.';
$pattern = '/(\#(.*)\*)/gi';
$replacement = '________';
echo preg_replace($pattern, $replacement, $string);
?>

Esta web va muy bien para probar las expresiones regulares.
http://regexr.com/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Reemplazar "strings" diferentes (múltiples)

Publicado por DAVID (129 intervenciones) el 01/02/2016 11:20:12
Muchas gracias,
me suena a chino lo que has puesto. jajajja.
Me apunto la web que dices para poder hacer pruebas,

Un saludo y gracias de nuevo.
David, estudio de diseño grafico
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Reemplazar "strings" diferentes (múltiples)

Publicado por Jose Antonio (10 intervenciones) el 01/02/2016 11:24:21
David, soy programador y analista especializado en web (front-end y back-end) desde hace más de 15 años, apúntante mi teléfono 606048558 y mi skype:weboculta y en todo lo que te pueda ayudar dímelo sin problemas.

Si puntualmente necesitaras a alguien porque no llegaras o porque necesitas una mano podríamos hablar.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Reemplazar "strings" diferentes (múltiples)

Publicado por DAVID (129 intervenciones) el 01/02/2016 11:32:53
Perfecto, me lo apunto.
Quizás en breve necesite ayuda. Pues estoy con un plan de marketing sobre mi estudio, y en breve, creo, que recogeré frutos.
pero me apunto tus datos. Si quieres, puedes mandarme un correo por mi web, para tenerte mas localizado.

Un saludo
David, paginas web economicas
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Reemplazar "strings" diferentes (múltiples)

Publicado por Jose Antonio (10 intervenciones) el 01/02/2016 11:36:49
Hecho. Gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Reemplazar "strings" diferentes (múltiples)

Publicado por Margarita (6 intervenciones) el 01/02/2016 14:53:13
También funciona ... Gracias ... Ya estaba desistiendo del test. No encontré una sino dos respuestas ...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar