PHP 8.6.0 Beta 1 is available for testing

mb_strimwidth

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)

mb_strimwidthTrunca una cadena

Descripción

function mb_strimwidth(
string $string,
int $start,
int $width,
string $trim_marker = "",
? string $encoding = null
): string

Trunca la cadena string a la longitud width especificada, donde los caracteres de media caja cuentan como 1, y los caracteres de caja completa cuentan como 2. Ver » http://www.unicode.org/reports/tr11/ para más detalles sobre las cajas de caracteres asiáticos del este.

Parámetros

string

La cadena a truncar.

start

start es la posición de inicio, en número de caracteres desde el principio de la cadena (el primer carácter es 0), o si la posición es negativa, número de caracteres desde el final de la string .

width

La anchura de la truncación deseada. Si se especifica una anchura negativa, debe contarse desde el final de la cadena.

Nota:

Proporcionar una anchura negativa está obsoleto a partir de PHP 8.3.0.

trim_marker

trim_marker es la cadena añadida al final de la cadena truncada.

encoding
El parámetro encoding es la codificación de caracteres. Si se omite o es null , se utilizará el valor de la codificación de caracteres interna.

Valores devueltos

La cadena truncada. Si trim_marker está definido, trim_marker reemplaza los últimos caracteres para corresponder al tamaño width.

Historial de cambios

Versión Descripción
8.3.0 Proporcionar una width negativa a mb_strimwidth() ahora está obsoleto.
8.0.0 encoding ahora acepta null .
7.1.0 Se añadió soporte para starts y widths negativos.

Ejemplos

Ejemplo #1 Ejemplo con mb_strimwidth()

<?php
echo mb_strimwidth("Hello World", 0, 10, "...");
// Muestra: "Hello W..."
?>

Véase también

Found A Problem?

Learn How To Improve This PageSubmit a Pull RequestReport a Bug
+add a note

User Contributed Notes 2 notes

up
1
jamesgrimshaw2006 at gmail dot com
2 years ago
mb_strimwidth will only append "trim_marker" if the string is over the width.
*test code*
 $HashTags = 'Results';
 $socialmediatext = 'abcdefghijklmnopqrstuvwxyz';
 for( $i=0; $i<=20; $i++ )
 {
 $socialmediatext .= '.';
 $Twittext = mb_strimwidth($socialmediatext,0,35,$HashTags);
 echo "<p>[".strlen($Twittext)."]$Twittext</p>";
 }
*output*
[27]abcdefghijklmnopqrstuvwxyz.
[28]abcdefghijklmnopqrstuvwxyz..
[29]abcdefghijklmnopqrstuvwxyz...
[30]abcdefghijklmnopqrstuvwxyz....
[31]abcdefghijklmnopqrstuvwxyz.....
[32]abcdefghijklmnopqrstuvwxyz......
[33]abcdefghijklmnopqrstuvwxyz.......
[34]abcdefghijklmnopqrstuvwxyz........
[35]abcdefghijklmnopqrstuvwxyz.........
[35]abcdefghijklmnopqrstuvwxyz..Results
[35]abcdefghijklmnopqrstuvwxyz..Results
[35]abcdefghijklmnopqrstuvwxyz..Results
[35]abcdefghijklmnopqrstuvwxyz..Results
[35]abcdefghijklmnopqrstuvwxyz..Results
[35]abcdefghijklmnopqrstuvwxyz..Results
[35]abcdefghijklmnopqrstuvwxyz..Results
[35]abcdefghijklmnopqrstuvwxyz..Results
[35]abcdefghijklmnopqrstuvwxyz..Results
[35]abcdefghijklmnopqrstuvwxyz..Results
[35]abcdefghijklmnopqrstuvwxyz..Results
[35]abcdefghijklmnopqrstuvwxyz..Results
up
0
dregad at NOSPAM-mantisbt dot org
3 years ago
I see a lot of usage in the field where people rely on this function to truncate a string to a given length and append some chars at the end following example #1 in the above documentation.
While this works just fine with Western alphabets, it should be noted that a string's width is NOT necessarily the same as its length.
In Chinese, Japanese and Korean, some characters can be represented as full or half width, which may lead to unexpected results...
<?php
$str = ['English' => 'Switzerland',
 'Half width' => 'スイス',
 'Full width' => 'スイス',
 ];
foreach ($str as $w => $s) {
 printf("%-10s: %s (bytes=%d chars=%d width=%d)\nSubstring : %s\nTrim width: %s\n\n",
 $w, $s,
 strlen($s), mb_strlen($s), mb_strwidth($s),
 mb_substr($s, 0, 3),
 mb_strimwidth($s, 0, 3)
 );
}
/* Output
# With ASCII, chars == width, so everything works as expected
English : Switzerland (bytes=11 chars=11 width=11)
Substring : Swi
Trim width: Swi
# With half-width katakanas, it works too
Half width: スイス (bytes=9 chars=3 width=3)
Substring : スイス
Trim width: スイス
# Full-width katakanas are twice as wide, so we only get the 1st 'su' !
Full width: スイス (bytes=9 chars=3 width=6)
Substring : スイス
Trim width: ス
*/
>?
+add a note

AltStyle によって変換されたページ (->オリジナル) /