2012-02-09 4 views
14

Sto cercando di troncare del testo in PHP e sono incappato in questo metodo (http://theodin.co.uk/blog/development/truncate-text-in-php-the-easy-way.html), che a giudicare dai commenti sembra una soluzione di facile implementazione. Il problema è che non so come implementarlo: S.Troncare il testo in PHP?

Qualcuno potrebbe indicarmi la direzione di cosa fare per implementarlo? Qualsiasi aiuto sarebbe apprezzato.

Grazie in anticipo.

+1

Quello che non capisci circa 'substr()'? Dove ti stai confondendo? È una funzione che restituisce parte della stringa sorgente, in base ai parametri che gli vengono assegnati. – Brad

+1

Sì, usa solo 'substr()' il primo parametro è il tuo testo, il secondo è l'offset - se impostato a 0 verrà troncato dall'inizio se impostato a 1,2,3 ... verrà troncato dopo che molti caratteri, il terzo argomento è la lunghezza che deve essere troncata. Ad esempio 'substr (" ciao mondo ", 3, 4)' restituirà 'lo w' - 4 caratteri dopo 3. –

+0

possibile duplicato di [Tronca una stringa multibyte in n caratteri] (http://stackoverflow.com/questions/2154220/truncate-a-multibyte-string-to-n-chars) – Gordon

risposta

51

La cosa ovvia da fare è leggere il documentation.

Ma per aiutare: substr($str, $start, $end);

$str è il testo

$start è l'indice di carattere per iniziare a. Nel tuo caso, è probabile che 0 significhi il principio.

$end è dove da troncare a. Supponiamo che tu voglia finire con 15 caratteri, per esempio. Si potrebbe scrivere in questo modo:

<?php 

$text = "long text that should be truncated"; 
echo substr($text, 0, 15); 

?> 

e si dovrebbe ottenere questo:

long text that 

ha un senso?

EDIT

Il link che hai dato è una funzione per trovare l'ultimo spazio bianco dopo tritare il testo ad una lunghezza desiderata in modo da non tagliare fuori nel bel mezzo di una parola. Tuttavia, manca una cosa importante: la lunghezza desiderata da passare alla funzione invece di assumere sempre che si desidera che sia 25 caratteri. Quindi, ecco la versione aggiornata:

function truncate($text, $chars = 25) { 
    if (strlen($text) <= $chars) { 
     return $text; 
    } 
    $text = $text." "; 
    $text = substr($text,0,$chars); 
    $text = substr($text,0,strrpos($text,' ')); 
    $text = $text."..."; 
    return $text; 
} 

Quindi nel tuo caso si sarebbe incollare questa funzione nel file functions.php e chiamare in questo modo nella tua pagina:

$post = the_post(); 
echo truncate($post, 100); 

Questo taglierà tuo post basso fino all'ultima occorrenza di uno spazio bianco precedente o uguale a 100 caratteri. Ovviamente puoi passare qualsiasi numero invece di 100. Qualunque cosa tu abbia bisogno.

+0

Inizio di un haiku? –

+0

sicuramente. Quasi decisamente uno veramente brutto. –

+0

Grazie per l'aiuto, sto cercando di dare un senso a questo. Mi scuso in anticipo se vengo fuori stupido. Quindi dovrei mettere quella stringa dal sito web a cui mi sono collegato in qualcosa di simile a un file functions.php (sto usando WordPress)? Quello che sto dicendo è dove dichiaro quella funzione? – realph

3
$mystring = "this is the text that I would like to had truncated"; 

// Pass your variable to the function 
$mystring = truncat($mystring); 

// Truncated tring printed out; 
echo $mystring; 


//truncate text function 
public function truncate($text) { 

    //specify number fo characters to shorten by 
    $chars = 25; 

    $text = $text." "; 
    $text = substr($text,0,$chars); 
    $text = substr($text,0,strrpos($text,' ')); 
    $text = $text."..."; 
    return $text; 
} 
3
$text="abc1234567890"; 

// truncate to 4 chars 

echo substr(str_pad($text,4),0,4); 

questo modo si evita il problema di troncare una stringa 4 caratteri a 10 caratteri .. (cioè fonte è più piccolo del necessario)

+0

Esattamente quello che mi serviva! : D –