Ho scoperto che Drupal, con una qualche sua specifica funzione taglia la stringa che caratterizza l'user name degli utenti, ad un dato numero massimo di caratteri seguiti da puntini.
esempio:
user: roberto drupal name
user truncate: roberto ...
io per fare questa cosa, all'interno della nuova funzione di login form da poco creata, ho insrito una mia funzione specifica per troncare le stringe. Niente di particolare, ma molto utile.
Volevo sapere qual è questa funzione di drupal in modo da poterla utilizzare direttamente, rimuovendo quella da me creata?
[ se le cose già esistono, inutile inserire altro codice superfluo ]
includes/theme.inc:1662
if (drupal_strlen($object->name) > 20) {
$name = drupal_substr($object->name, 0, 15) .'...';
}
else {
$name = $object->name;
}
Più imparo, più dubito.
Certo che la funzione drupal_substr è alquanto complessa!!... un casino di righe di codice.
Io avevo fatto una funzione di questo tipo, semplice ed efficace e che tra l'altro controlla anche gli spazi... quando ci sono.
<?php
// Truncate String
function truncate_string($text, $max_char = 5) {
if (strlen($text) > $max_char) {
$text_cutted = substr($text, 0, $max_char);
$last_space = strrpos($text_cutted, " ");
if ($last_space > 3) {
$newtext = substr($text_cutted, 0, $last_space);
} else {
$newtext = $text_cutted;
}
$text = $newtext . '...';
}
return $text;
}
?>
http://www.sanisapori.eu
Continuo a resistere a tutto forchè le tentazioni...
Non proprio, sta solo tenendo conto che l'ambiente PHP può essere multibyte, oppure UTF8 encoded. Nel secondo caso (dalla
else {
in poi) sta tenendo conto che certi caratteri sono composto di 2, 3, o 4 byte, insieme al fatto che i parametri $start e $length possono essere negativo (cioè leggendo indietro dalla fine dello stringha).Questo 'casino di righe' risultano in una funzione molto flessibile, ed identico al PHP substr() che doveva sostituire - per motivi spiegati qui http://www.php.net/manual/en/function.substr.php#93884.
Perfetto - per le tue esigenze, presumo. Le specifiche sono molto più semplice, quindi richiede meno codice. Ma eviti nomi in cinese - potrebbe causare problemi, tipo 上海 (Shanghai) perchè strlen("上海") torna con 6, non 2, mentre mb_strlen("上海", "UTF-8") torna con 2.
Non è un problema per te, perchè non era nelle tue specifiche. Ma Drupal è anche tradotto in chinese - http://drupalchina.org/
HTH
约翰
Più imparo, più dubito.