Hola,
Cita: He probado con una función que me lo hace pero me da problemas con los acentos, cursivas, ...
Y el codigo que usas con el substring tambien te va a dar ese problema. ¿Por que? Porque se basa en caracteres de la cadena. Y en HTML a veces se usan mas caracteres para representar una letra. Por ejemplo,
italica es una cadena de la forma <i>italica</i>, camión es camión, etc. Si a <i>italica</i> le mandas coger los 5 primeros caracteres, te queda la cadena <i>it, que incluso puede ser HTML no valido.
Saludso.