Ver Mensaje Individual
  #2 (permalink)  
Antiguo 07/10/2020, 09:52
Avatar de Triby
Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 5 meses
Puntos: 2237
Respuesta: Acortar texto en cadena sin cortar palabra

Viendo la lógica de la función, me parece que no tiene mucha lógica, porque:

1. Cortas la cadena sin tomar en cuenta si se va a cortar una palabra o no

2. No me queda claro porque se usa una expresión regular y preg_split() en lugar de explode(). Hay la posibilidad de que en la cadena existan entidades HTML como  ? Entonces creo que faltan validaciones al crear el contenido

3. Uso de preg_match() para saber si la cadena tenía un espacio al final o no y, dependiendo de eso, borrar el último elemento. Esto debió solventarlo el trim() y, además, estoy 99.99% seguro de que el punto 1 y este son la causa de tu problema y no los "caracteres raros" que, realmente, no son tan raros, pero eso es otro tema

Cita:
Iniciado por Ember
No tengo claro qué tendría que tocar en esa función para que salgan palabras con caracteres especiales, o si merece la pena usar otra función.
Creo que lo que merece la pena es entender qué hace cada cosa para poder aplicar los cambios necesarios.

Sugerencia:

1. Separa la cadena por espacios, solo con explode()

2. Podrías usar array_map() para recorrer los elementos y crear la nueva cadena
__________________
- León, Guanajuato
- GV-Foto