Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Capitalización de textos en PHP

Estas en el tema de Capitalización de textos en PHP en el foro de PHP en Foros del Web. Buen día, Recientemente acabo de comprar un script para hacer importaciones de los productos de mi proveedor, básicamente lo que hace es descargar el feed ...
  #1 (permalink)  
Antiguo 30/05/2013, 16:17
 
Fecha de Ingreso: octubre-2012
Mensajes: 17
Antigüedad: 12 años, 1 mes
Puntos: 0
Busqueda Capitalización de textos en PHP

Buen día,

Recientemente acabo de comprar un script para hacer importaciones de los productos de mi proveedor, básicamente lo que hace es descargar el feed xml y despues imprimirlo a la base de datos de la tienda (Online)

Todo resulta muy bien solo que mi proveedor directamente maneja todos sus artículos con mayúsculas, dígase el titulo, la descripción e inclusive las categorías.

Lo que estoy buscando es convertir las mayúsculas a texto capitalizado para conservar una estética en el sitio. Por ejemplo:

TELÉFONO INALÁMBRICO 4 EXTENSIONES > Teléfono inalámbrico 4 extensiones.

Agradezco su ayuda infinitamente ya que se muy poco de PHP lo mio es HTML y CSS.
  #2 (permalink)  
Antiguo 30/05/2013, 16:31
 
Fecha de Ingreso: abril-2012
Mensajes: 106
Antigüedad: 12 años, 7 meses
Puntos: 2
Respuesta: Capitalización de textos en PHP

Código PHP:
Ver original
  1. $texto="TELÉFONO INALÁMBRICO 4 EXTENSIONES";
  2. $texto = ucwords(strtolower($texto));
  3. echo $texto;
  4. //daria como resultado Telefono Inalambrico 4 Extensiones
  5.  
  6. // ucwords convierte a mayúsculas el primer caracter de cada palabra en una cadena
  7. //strtolower  convierte una cadena a minúsculas

espero que te ayude en algo
  #3 (permalink)  
Antiguo 12/06/2013, 18:25
 
Fecha de Ingreso: octubre-2012
Mensajes: 17
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: Capitalización de textos en PHP

Gracias por responder "samito111" ya pude aplicarlo el detalle aqui esta las cadenas que me comentas solo sirven para poner la primera letra de cada palabra en mayusculas:

Código:
$texto="TELÉFONO INALÁMBRICO 4 EXTENSIONES";
$texto = ucwords(strtolower($texto));
echo $texto;
//Quedando en este caso como Telefono Inalambrico 4 Extensiones
Si uso "ucfirst"
Código:
$texto="TELÉFONO INALÁMBRICO 4 EXTENSIONES";
$texto = ucwords(strtolower($texto));
echo $texto;
//Quedando en este caso como Telefono inalambrico 4 extensiones
Aqui el detalle es que estoy buscando una opción para que despues del . "punto" empieze nuevamente con la primera letra en mayuscula, ejemplo:

Espacio para almacenar hasta 25 numeros frecuentes y 10 accesos directos. Capacidad de transferir llamadas en 2 simples pasos.

Eso es basicamente lo que solo queda por resolver, ¿sera posible hacer esto?
  #4 (permalink)  
Antiguo 12/06/2013, 19:57
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 7 meses
Puntos: 292
Respuesta: Capitalización de textos en PHP

Código PHP:
<?php

$texto 
'espacio para almacenar hasta 25 numeros frecuentes y 10 accesos directos.    capacidad de transferir llamadas en 2 simples pasos.';

function 
capitaliza_frases($texto){

$cadenas explode('.',$texto);

$cadena_final='';
foreach (
$cadenas as $cadena){   
   
$cadena_sin_espacios ltrim($cadena);
   
// no uso esa cantidad, seria mejor si la respetara
   
$cant_espacios strlen($cadena)-strlen($cadena_sin_espacios);   
   
$cadena_final .= '. '.ucfirst($cadena_sin_espacios);
   
}

return 
substr($cadena_final,1);  
}

echo 
capitaliza_frases($texto);
RESULTADO:

Cita:
Espacio para almacenar hasta 25 numeros frecuentes y 10 accesos directos. Capacidad de transferir llamadas en 2 simples pasos.
__________________
Salu2!
  #5 (permalink)  
Antiguo 13/06/2013, 11:16
 
Fecha de Ingreso: octubre-2012
Mensajes: 17
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: Capitalización de textos en PHP

Segui tus pasos pero algo debo estar haciendo mal y no me he dado cuenta, remplaze los datos que mencionas por los de mi codigo pero sigue mandando el mismo texto. Anexo el codigo:

Código PHP:
//Capitalizacion de textos ficha tecnica
        
$desc1 eregi_replace(".*<ficha_tecnica>","",$part[$i]);;

        function 
capitaliza_frases($desc1){
        
        
$cadenas explode('.',$desc1);
        
        
$cadena_final='';
        foreach (
$cadenas as $cadena){   
        
$cadena_sin_espacios ltrim($cadena);
        
// no uso esa cantidad, seria mejor si la respetara
        
$cant_espacios strlen($cadena)-strlen($cadena_sin_espacios);   
        
$cadena_final .= '. '.ucfirst($cadena_sin_espacios);
        
        }
        
        return 
substr($cadena_final,1);  
        }

        echo 
capitaliza_frases($desc1); 
        
$desc1 eregi_replace("</ficha_tecnica>.*","",$desc1);
        
//Esto da como resultado: Espacio para almacenar hasta 25 numeros frecuentes y 10 accesos directos. capacidad de transferir llamadas en 2 simples pasos. IMPORTANTE, DESPUES DEL PUNTO MANDA MINUSCULAS. 
Agradezco su ayuda.
  #6 (permalink)  
Antiguo 13/06/2013, 11:54
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 7 meses
Puntos: 292
Respuesta: Capitalización de textos en PHP

El resultado de capitaliza_frases($desc1) debes guardarlo en algun lado... solo estas imprimiendolo y lo descartas
__________________
Salu2!
  #7 (permalink)  
Antiguo 13/06/2013, 12:20
 
Fecha de Ingreso: octubre-2012
Mensajes: 17
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: Capitalización de textos en PHP

Gracias "Italico76", borre el capitaliza_frases($desc1) y ya no lo imprime en el bot pero el detalle aqui es que sigue mandando texto en minusculas despues del punto a la base de datos, pego el texto de como lo imprime en la BD:

Código:
Espacio para almacenar hasta 25 numeros frecuentes y 10 accesos directos. capacidad de transferir llamadas en 2 simples pasos.
Cuando en realidad lo que busco es que despues del punto que esta delante de "directos" vuelva con a escribir con la primer letra en mayuscula, de la siguiente manera:

Código:
Espacio para almacenar hasta 25 numeros frecuentes y 10 accesos directos. Capacidad de transferir llamadas en 2 simples pasos.
Le he dado mil vueltas al codigo pero no logro dar con la solución, no se pero tengo la sensación de que es algo sumamente sencillo y que lo estoy pasando de lado.
  #8 (permalink)  
Antiguo 13/06/2013, 12:26
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 7 meses
Puntos: 292
Respuesta: Capitalización de textos en PHP

Probastes mi ejemplo completo con el texto de prueba ? si es asi veras que funciona

Entonces, si no te funciona es probable que haya algun caracter adicional (oculto) en tu texto que yo no considere al momento de hacer la funcion aunque [edito], segun la documentacion de ltrim() los eliminaria:

http://www.php.net/manual/es/function.ltrim.php


Te digo como se hizo: se divide el texto en frases por los puntos (se corta ahi)... se capitalizan las frases y se vuelve a unir todo. La cantidad de espacios delante los ignore.

Si hubiera un caracter distinto de espacio ( ) luego del punto (.) ahi ya se va todo al diablo porque intentaria capitalizar ese caracter y no haria nada
__________________
Salu2!
  #9 (permalink)  
Antiguo 13/06/2013, 15:05
 
Fecha de Ingreso: abril-2012
Mensajes: 106
Antigüedad: 12 años, 7 meses
Puntos: 2
Respuesta: Capitalización de textos en PHP

probe el codigo de Italico76 y funciona a la perfeccion. creo que el error que esta cometiendo folvera es que despues del punto le esta dando un espacio creo que ese es el problema.como dije lo probe y a mi me funcione correctamente.
folvera prueba quitandole el espacio despues del punto
  #10 (permalink)  
Antiguo 13/06/2013, 15:11
 
Fecha de Ingreso: octubre-2012
Mensajes: 17
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: Capitalización de textos en PHP

Hola de nuevo "Italico76", curiosamente probe el codigo de manera limpia incrustado en mi bot, pero manda todo el texto en minusculas no hace caso del "ucfirst" podrias orientarme que ya me he leeido buena parte del manual de PHP y no logro dar con la solucion. Te anexo el frangmento de mi bot correspondiente a lo que se quiere capitalizar:

Código PHP:
        //Primera parte de la descripción tomada de una etiqueta XML.

        
$desc1 = (ucfirst (strtolower (eregi_replace(".*<ficha_tecnica>","",$part[$i]))));
        
$desc1 eregi_replace("</ficha_tecnica>.*","",$desc1);
        
        
//Impresion capitalizada (Muestra en minusculas el texto)
        
        
$texto 'espacio para almacenar hasta 25 numeros frecuentes y 10 accesos directos. capacidad de transferir llamadas en 2 simples pasos.';
        function 
capitaliza_frases($texto){
        
$cadenas explode('.',$texto);
        
$cadena_final='';
        foreach (
$cadenas as $cadena){   
        
$cadena_sin_espacios ltrim($cadena);

        
// No uso esa cantidad, seria mejor si la respetara (Tu comentario "Italico76")

        
$cant_espacios strlen($cadena)-strlen($cadena_sin_espacios);   
        
$cadena_final .= '. '.ucfirst($cadena_sin_espacios);
        }
        return 
substr($cadena_final,1);  
        }

        
$texto eregi_replace("</ficha_comercial>.*","",$texto);
        
        
//Union de ambas partes de la descripción (Union de etiquetas cuando son XML)

        
$desc nl2br($texto."<br><br>".$desc1); 
Como puede verse en el codigo toma la información de una etiqueta en un archivo xml descargado por el mismo bot para despues imprimirlo a la base de datos. En la primera parte se ve como implemente tu codigo.

Espero puedas orientarme, de momento voy a seguir buscando cual es el problema.
  #11 (permalink)  
Antiguo 13/06/2013, 15:15
 
Fecha de Ingreso: octubre-2012
Mensajes: 17
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: Capitalización de textos en PHP

Hola "Samito111"

Probe con quitarle el espacio al texto pero lo imprime "tal cual", ¿o te referias a quitarle algun espacio al codigo?
  #12 (permalink)  
Antiguo 13/06/2013, 15:22
 
Fecha de Ingreso: abril-2012
Mensajes: 106
Antigüedad: 12 años, 7 meses
Puntos: 2
Respuesta: Capitalización de textos en PHP

me referia a que por ejemplo .
$texto="aqui el texto de prueba. aqui ya hay un espacio"
despues del punto hay un espacio . pero acabo de probar el codigo a ver que es lo que hace y el codigo funciona a la perfeccion.
  #13 (permalink)  
Antiguo 13/06/2013, 15:23
 
Fecha de Ingreso: abril-2012
Mensajes: 106
Antigüedad: 12 años, 7 meses
Puntos: 2
Respuesta: Capitalización de textos en PHP

este es el cogido que probe ahorita :
Código PHP:
Ver original
  1. <?php
  2. $texto = 'espacio para almacenar hasta 25 numeros frecuentes y 10 accesos directos capacidad de transferir llamadas en 2 simples pasos.';
  3. function capitaliza_frases($texto){
  4. $cadenas = explode('.',$texto);
  5. $cadena_final='';
  6. foreach ($cadenas as $cadena){
  7.  $cadena_sin_espacios =ucfirst( ltrim($cadena));
  8.    // no uso esa cantidad, seria mejor si la respetara
  9.    $cant_espacios = strlen($cadena)-strlen($cadena_sin_espacios);  
  10.    $cadena_final .= '. '.($cadena_sin_espacios);  
  11. }
  12. return substr($cadena_final,1);  
  13. }
  14. echo capitaliza_frases($texto);
  15. ?>
  #14 (permalink)  
Antiguo 13/06/2013, 15:25
 
Fecha de Ingreso: abril-2012
Mensajes: 106
Antigüedad: 12 años, 7 meses
Puntos: 2
Respuesta: Capitalización de textos en PHP

probe insertando puntos en varias partes del texto y si despues del punto convierte la primera letra a mayuscula.
puedes escribir el texto que deseas capitalizar.
  #15 (permalink)  
Antiguo 13/06/2013, 15:27
 
Fecha de Ingreso: octubre-2012
Mensajes: 17
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: Capitalización de textos en PHP

Efectivamente samito, lo que busco es que capitalice despues del "punto y espacio (. )" Tal como lo muestro en el codigo que pegue mas arriba. De hecho lo que imprime en la base de datos es el texto "tal cual" lo que no deberia de ser por lo menos deberia de imprimir la primera letra en mayusculas pero no lo hace.

Estoy investigando para ver que estoy haciendo mal.
  #16 (permalink)  
Antiguo 13/06/2013, 15:40
 
Fecha de Ingreso: abril-2012
Mensajes: 106
Antigüedad: 12 años, 7 meses
Puntos: 2
Respuesta: Capitalización de textos en PHP

eso es lo raro talves la version de php de utilisas sea el problema.como te dije acabo de probar el codigo y esta bien.
no entendi algo: lo que haces es registrar datos en tu base de datos o seleccionas datos de tu base de datos
  #17 (permalink)  
Antiguo 13/06/2013, 15:46
 
Fecha de Ingreso: octubre-2012
Mensajes: 17
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: Capitalización de textos en PHP

Vere si el problema es mi PHP, con respecto al codigo sencillamente lo que hago es tomar los datos de los productos del catalogo de mi provedor a traves de XML para luego insertarlos en la base de datos de mi tienda.

Eso es lo que hace.
  #18 (permalink)  
Antiguo 13/06/2013, 15:58
 
Fecha de Ingreso: abril-2012
Mensajes: 106
Antigüedad: 12 años, 7 meses
Puntos: 2
Respuesta: Capitalización de textos en PHP

ok entendi .aver verifica si el problema en si es php .hablamo luego me desconecto
  #19 (permalink)  
Antiguo 13/06/2013, 16:14
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 7 meses
Puntos: 292
Respuesta: Capitalización de textos en PHP

Extrae manualmente un pedazo el XML y pegalo aqui
__________________
Salu2!
  #20 (permalink)  
Antiguo 13/06/2013, 16:37
 
Fecha de Ingreso: octubre-2012
Mensajes: 17
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: Capitalización de textos en PHP

Anexo tanto el codigo PHP como el XML puede verse en la carpeta de DropBox que comparto abajo.

https://www.dropbox.com/sh/et9vy127czpbffn/5poe3WBqhW

Por razones de seguridad varios datos han sido cambiados, no afecta el resto del codigo.
  #21 (permalink)  
Antiguo 13/06/2013, 16:48
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 7 meses
Puntos: 292
Respuesta: Capitalización de textos en PHP

Muy chistoso...en ese XML esta todo en mayusculas......
__________________
Salu2!
  #22 (permalink)  
Antiguo 13/06/2013, 16:57
 
Fecha de Ingreso: octubre-2012
Mensajes: 17
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: Capitalización de textos en PHP

Efectivamente, por eso busco capitalizar el texto para conservar la estetica del sitio, casi estoy seguro que el problema esta en el PHP por que no logro hacerlo funcionar de manera correcta, imprime el texto a la base de datos tal cual. Es muy raro.
  #23 (permalink)  
Antiguo 13/06/2013, 17:15
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Capitalización de textos en PHP

Cita:
Iniciado por folvera6 Ver Mensaje
[...] imprime el texto a la base de datos tal cual. Es muy raro.
Yo no lo veo raro, si así sucede es porque así lo has programado.

Pero bueno, yo no voy a descargar nada ni pienso adivinar dónde está el problema, así que si muestras el código exacto en el que imprimes dicho texto sería bueno ver por qué es "raro" según tu.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #24 (permalink)  
Antiguo 13/06/2013, 17:26
 
Fecha de Ingreso: octubre-2012
Mensajes: 17
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: Capitalización de textos en PHP

Gracias por responder "pateketrueke"

Como lo habia comentado mas arriba el codigo que imprime el texto es el siguiente:

Código PHP:
        //Inicio de impresion capitalizada
        
        
$texto 'espacio para almacenar hasta 25 numeros frecuentes y 10 accesos directos. capacidad de transferir llamadas en 2 simples pasos.';
        function 
capitaliza_frases($texto){
        
$cadenas explode('.',$texto);
        
$cadena_final='';
        foreach (
$cadenas as $cadena){
        
$cadena_sin_espacios =ucfirstltrim($cadena));
        
// no uso esa cantidad, seria mejor si la respetara
        
$cant_espacios strlen($cadena)-strlen($cadena_sin_espacios);  
        
$cadena_final .= '. '.($cadena_sin_espacios);  
        }
        return 
substr($cadena_final,1);  
        }
        echo 
capitaliza_frases($texto);
        
        
//Fin de impresion capitalizada 
Lo raro esta en que cuando lo inserto en mi bot para hacer la importación del XML de mi provedor imprime tal cual el texto, mas no así cuando lo ejecuto solo sin integrarlo a mi bot, eso es lo raro.

Sigo investigando y si encuentro algo les cuento.
  #25 (permalink)  
Antiguo 13/06/2013, 18:00
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Capitalización de textos en PHP

No, no, no.

Ese código me ha quedado claro desde siempre, como ejemplo funciona excelente, pero yo hablo del código real donde dices que no sirve dicha función, ¿me entiendes?

No hace falta ver la función en si, hace falta ver dónde metes la pata en el código que la utiliza.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #26 (permalink)  
Antiguo 13/06/2013, 18:05
 
Fecha de Ingreso: octubre-2012
Mensajes: 17
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: Capitalización de textos en PHP

Efectivamente eso es lo que he estado buscando en mi codigo (el cual adjunte en dropbox) pero no logro ver cual es mi error. La sintaxis segun yo no esta mal por que si aplico el codigo tal cual si transforma el texto mas no así cuando lo integro en mi bot.

Por cierto te envíe mi ID de Skype para ver si es posible cotizarme 2 proyectos.
  #27 (permalink)  
Antiguo 26/06/2013, 17:55
 
Fecha de Ingreso: octubre-2012
Mensajes: 17
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: Capitalización de textos en PHP

Bueno finalmente solucione el problema con lo que se describe en un tema de brightcherry.co.uk dejo el link por si lo necesitan http://www.brightcherry.co.uk/scribbles/php-capitalize-first-letter-of-every-sentence/

Etiquetas: css, textos
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 19:28.