有很多的 功能 和 方法 sobre el tipo de datos 链 (字符串) 在 PHP. 通常, cuando queremos acortar o ajustar una cadena a un determinado número de caracteres, usamos la función substr 通过以下方式:
1 | $nuevaCadena = substr ( $cadena, 0, $longitud ) |
donde la variable $长度 tendrá el valor del tamaño de cadena resultante que queremos conseguir.
Imagina ahora que queremos realizar el ajuste o recorte de una cadena de texto que vamos a usar en una web 页 作为 entradilla 任何 noticia, 文章 o 类似. Si usamos directamente la función substr sobre la cadena a ajustar, esta función 不 va a hacer 区别 entre letras, 单词和/或在白色空格, por lo que el resultado puede ser una cadena donde la última palabra esté 切.
我们打算去看,我们可以解决这个问题, 做那件事, dada una cadena y una longitud, ésta se ajuste a dicho tamaño, teniendo en cuenta que no debe cortar palabras. 要做到这一点, 看看下面的函数:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | <?php function trimString ( $cadena, $longitud = 128 ) { //Eliminamos las etiquetas HTML $cadena = trim ( strip_tags ( $cadena ) ); if ( strlen ( $cadena ) > $longitud ) { //Acortamos la cadena a la longitud dada $cadena = substr ( $cadena, 0, $longitud + 1 ); //Expresión regular de espacio en blanco $regExp = "/[\s]| /"; //Dividimos la cadena en palabras y la guardamos en un array $palabras = preg_split ( $regExp, $cadena, -1, PREG_SPLIT_NO_EMPTY ); //Buscamos la expresión regular al final de la cadena preg_match ( $regExp, $cadena, $ultimo, 0, $longitud ); if ( empty ( $ultimo ) ) { //Si la última palabra no estaba seguida por un espacio en blanco, //la eliminamos del conjunto de palabras array_pop ( $palabras ); } //Creamos la cadena resultante por la unión del conjunto de palabras $cadena = implode ( ' ', $palabras ) . '…'; } return $cadena; } |
Esta función toma como 参数 一个 链 和 长度 所需.
- 首先, 消除 de dicha cadena cualquier HTML 标记 que pueda tener.
- 然后, crea una cadena con la longitud del tamaño dado.
- 然后, 将字符串拆分为词, creando un 数组 contenedor de ellas, y mira si al final de la cadena existe un espacio en blanco. 如果不是, 消除 la última entrada del array, 避免 así las palabras cortadas.
- 最后, crea una cadena con las palabras del array y la 返回.
Vamos a ver un 示例. 如果我们有下面的字符串,它应用前面的函数:
1 2 3 4 5 6 7 8 9 10 | <?php $cadena = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor '. 'incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis '. 'nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. '. 'Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore '. 'eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, '. 'sunt in culpa qui officia deserunt mollit anim id est laborum.'; echo trimString($cadena, 75); |
的 结果 será el siguiente:
1 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod… |
如果不使用此函数是, hubiéramos usado la función substr, 其结果就是不同:
1 | echo substr($cadena, 0, 75).'…'; |
1 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tem… |
dejando la última palabra de la cadena a medias.
正如你可以看到, este último resultado no quedaría muy bien, como entradilla, en una página web, ya que estamos cortando palabras. Resulta más idóneo el resultado obtenido al llamar a la función trimString, la cual ha evitado los posibles cortes eliminando aquellas palabras que se quedan a medias.
"一个想法"如何调整或修剪到一定长度在 PHP 中字符串”
谢谢, lo use para corregir un error al crear unos xml.