وهناك الكثير من وظائف و أساليب sobre el tipo de datos سلسلة (السلسلة) في بي إتش بي. عادة, 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 صفحة ويب مثل entradilla من بعض noticia, المادة o مماثلة. Si usamos directamente la función substr sobre la cadena a ajustar, esta función لا va a hacer تمييز entre letras, palabras y/o espacios en blanco, por lo que el resultado puede ser una cadena donde la última palabra esté قص.
Vamos a ver como podemos solventar esto, القيام بذلك, dada una cadena y una longitud, ésta se ajuste a dicho tamaño, teniendo en cuenta que no debe cortar palabras. للقيام بذلك, fíjate en la siguiente función:
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.
- ثم, separa la cadena en palabras, creando un الصفيف contenedor de ellas, y mira si al final de la cadena existe un espacio en blanco. En caso negativo, يلغي la última entrada del array, تجنب así las palabras cortadas.
- وأخيراً, crea una cadena con las palabras del array y la إرجاع.
Vamos a ver un مثال. Si tenemos la siguiente cadena de caracteres y aplicamos la función anterior sobre la misma:
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… |
Si en vez de usar esta función, hubiéramos usado la función substr, el resultado hubiese sido diferente:
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.
"يفكر أحد في"كيفية ضبط أو تقليم سلسلة لمدة معينة في بي إتش بي”
شكرا, lo use para corregir un error al crear unos xml.