Foros del Web » Programando para Internet » PHP »

en una cadena dejar solo la letras y un espacio

Estas en el tema de en una cadena dejar solo la letras y un espacio en el foro de PHP en Foros del Web. necesto en una cadena dejar solo letras y si hay mas de un espacio dejar solo uno como deberia hacerlo. @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código PHP: Ver ...
  #1 (permalink)  
Antiguo 23/12/2017, 08:18
 
Fecha de Ingreso: mayo-2011
Mensajes: 1.180
Antigüedad: 7 años, 2 meses
Puntos: 10
en una cadena dejar solo la letras y un espacio

necesto en una cadena dejar solo letras y si hay mas de un espacio dejar solo uno como deberia hacerlo.

Código PHP:
Ver original
  1. $cadena=" contengo_guones_y      muchos________espacios  ";
  2. echo preg_replace(''/[^a-zA-Z][^\s{1}]/,$cadena);

no se si esta bien asi.
tambien me gustaria saber como puedo quitar caracteres repetidos en cualquier cadena dejando solo uno por ejemplo en "cccassssaaa" dejarlo "casa".

Última edición por pithon; 23/12/2017 a las 08:47
  #2 (permalink)  
Antiguo 23/12/2017, 12:47
Avatar de alvaro_trewhela  
Fecha de Ingreso: octubre-2012
Ubicación: localhost
Mensajes: 887
Antigüedad: 5 años, 8 meses
Puntos: 103
Respuesta: en una cadena dejar solo la letras y un espacio

Ve que tal esto

Código PHP:
Ver original
  1. function removeRepeatedChars($str){
  2. $cNow = $str[0];
  3. $newStr = $str[0];
  4.     for($k=1;$k<strlen($str);$k++){
  5.         if($cNow != $str[$k]){
  6.         $newStr .= $str[$k];
  7.         $cNow = $str[$k];
  8.         }
  9.     }  
  10. return $newStr;
  11. }
  #3 (permalink)  
Antiguo 23/12/2017, 13:06
 
Fecha de Ingreso: mayo-2011
Mensajes: 1.180
Antigüedad: 7 años, 2 meses
Puntos: 10
Respuesta: en una cadena dejar solo la letras y un espacio

Cita:
Iniciado por alvaro_trewhela Ver Mensaje
Ve que tal esto

Código PHP:
Ver original
  1. function removeRepeatedChars($str){
  2. $cNow = $str[0];
  3. $newStr = $str[0];
  4.     for($k=1;$k<strlen($str);$k++){
  5.         if($cNow != $str[$k]){
  6.         $newStr .= $str[$k];
  7.         $cNow = $str[$k];
  8.         }
  9.     }  
  10. return $newStr;
  11. }
Hola, te agradezco tu ayuda, no la probe pero si es una solucion que funciona aunque me gustaria hacerlo con expresiones regulares, tambien me gustaria como capturar el texto de las diferentes etiquetas html que hay por ejemplo.

Código PHP:
Ver original
  1. $cadena="<b>soy negrita</b><i>y yo italica</i> sin estilos <span style='color:red'>yo letra roja</span>";

entonces teniendo esa cadena extraer esto:

soy negrita
y yo itlica
yo letra roja

pero claro las etiquetas no sabe las que hay si no ya seria cosa facil.
pero insisto me gustaria hacerlo con expresiones regulares, ya que estoy aprendiendo y no consigo hacer cosas de estas lo mas que pude fue extraer todo de las etiquetas.

alguna sugerencia?
  #4 (permalink)  
Antiguo 23/12/2017, 13:10
Avatar de alvaro_trewhela  
Fecha de Ingreso: octubre-2012
Ubicación: localhost
Mensajes: 887
Antigüedad: 5 años, 8 meses
Puntos: 103
Respuesta: en una cadena dejar solo la letras y un espacio

Bue.... eso es lo que te puedo ofrecer...

Para el html ve esto

http://php.net/manual/es/domdocument.loadhtml.php

En cuanto a regexp, busca en google hay MUCHISIMA docu.
  #5 (permalink)  
Antiguo 23/12/2017, 13:19
 
Fecha de Ingreso: mayo-2011
Mensajes: 1.180
Antigüedad: 7 años, 2 meses
Puntos: 10
Respuesta: en una cadena dejar solo la letras y un espacio

Cita:
Iniciado por alvaro_trewhela Ver Mensaje
Bue.... eso es lo que te puedo ofrecer...

Para el html ve esto

http://php.net/manual/es/domdocument.loadhtml.php

En cuanto a regexp, busca en google hay MUCHISIMA docu.
si hay mucho documentacion en google pero no encuentro lo que necesito, ya que las etiquetas cambian y son diferentes.
  #6 (permalink)  
Antiguo 23/12/2017, 16:08
 
Fecha de Ingreso: mayo-2011
Mensajes: 1.180
Antigüedad: 7 años, 2 meses
Puntos: 10
Respuesta: en una cadena dejar solo la letras y un espacio

Hola no consigo extraer el contenido de las etiquetas html estas pueden ser distintas ejemplo cadena.



Código PHP:
Ver original
  1. $cadena='<strong>
  2.            <span style="background-color: #ff0000">
  3.               B
  4.             </span>
  5.             u
  6.             <span style="background-color: #ff6600">
  7.               U_SCA
  8.             </span>
  9.             <span style="background-color: #ff0000">
  10.               R
  11.             </span>
  12.         </strong>
  13. ';
  14.  
  15. preg_match("/<[^<]\\>(.*?)<[^<]\\>/",$cadena),$resultado;
  16.  
  17. print_r($resultado);


me tendria que recuperar 'BUSCAR' descartando la u minuscula estoy probando asi;
  #7 (permalink)  
Antiguo 24/12/2017, 07:13
Avatar de alvaro_trewhela  
Fecha de Ingreso: octubre-2012
Ubicación: localhost
Mensajes: 887
Antigüedad: 5 años, 8 meses
Puntos: 103
Respuesta: en una cadena dejar solo la letras y un espacio

Parece que no leíste lo que te deje....

Mira esto:


Código PHP:
Ver original
  1. $cadena='<strong>
  2.           <span style="background-color: #ff0000">
  3.              B
  4.            </span>
  5.            u
  6.            <span style="background-color: #ff6600">
  7.              U_SCA
  8.            </span>
  9.            <span style="background-color: #ff0000">
  10.              R
  11.            </span>
  12.        </strong>
  13. ';
  14.  
  15. $doc = new DOMDocument();
  16. $doc->loadHTML($cadena);
  17.  
  18. $spans = $doc->getElementsByTagName("span");
  19.  
  20. for($k=0;$k<$spans->length;$k++){
  21. $span = $spans[$k];
  22. $nodeValue = $span->nodeValue;
  23. $style = $span->getAttribute("style");
  24. $color = explode(":",$style)[1];
  25. echo "span ".($k+1)." tiene valor $nodeValue y tiene un color de fondo $color <br/>";  
  26. }

Saluos.
  #8 (permalink)  
Antiguo 24/12/2017, 17:25
 
Fecha de Ingreso: mayo-2011
Mensajes: 1.180
Antigüedad: 7 años, 2 meses
Puntos: 10
Respuesta: en una cadena dejar solo la letras y un espacio

Hola tu codigo funciona bien pero comente en mi segundo mensaje que las etiquetas varian no son solo span. igual modificando un poco tu funcion ya esta listo. pero me surge otra duda y esta quiero hacerla con expresiones regulares supongamos esto;

Código HTML:
Ver original
  1. <p>
  2.    soy parrafo
  3.     <span style="color:red">soy rojo</span>
  4.     <b>negrita</b>
  5.     <span style="color:red">mas rojo</span>
  6.     <b style="background:green">fondo verde</b>
  7.      <span style="color:orange">naranja<b>otra negrita</b></span>
  8.   fin parrafo
  9. </p>

partiendo de este html (que las etiquetas varian pueden ser diferentes es decir no se sabe)seria guardar en un array el texto de cada etiqueta que sea exactamente igual teniendo en cuenta sus atributos tambien osea "<b>" no es lo mismo que "<b style='color:red'>" pongo un ejemplo para que se entienda mejor de como tendria que quedar el array.


Código array:
Ver original
  1. Array
  2. (
  3.     [p] => Array
  4.         (
  5.             [0] => soy parrafo fin parrafo
  6.         )
  7.  
  8.     [span] => Array
  9.         (
  10.             [0] => soy rojo mas rojo
  11.             [1] => naranja
  12.         )
  13.  
  14.     [b] => Array
  15.         (
  16.             [0] => negrita otra negrita
  17.             [1]=>fondo verde
  18.         )
  19. )

se que con condiciones bucles y alguna cosa mas se puede lograr pero me gustaria hacerlo con expresiones como dije antes.
  #9 (permalink)  
Antiguo 25/12/2017, 10:56
Avatar de alvaro_trewhela  
Fecha de Ingreso: octubre-2012
Ubicación: localhost
Mensajes: 887
Antigüedad: 5 años, 8 meses
Puntos: 103
Respuesta: en una cadena dejar solo la letras y un espacio

Estimado xomo la clase lo suguiere este recupera el dom de un html no solo los spans. En cuanto a los regexp busca en google por "parse html with regexp"

Creo que hay harta info

Etiquetas: cadena, dejar, espacio, letras
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 15:21.