2010-05-26 15 views
10

Qual è il modo migliore per ottenere le prime 5 parole di una stringa? Come posso dividere la stringa in due in modo tale prima stringa ha i primi 5 parole della stringa originale e la seconda stringa costituisce il resto della stringa originalePHP Qual è il modo migliore per ottenere le prime 5 parole di una stringa?

+0

Se si desidera veramente solo * words *, provare ['s ($ str) -> words (5)'] (https://github.com/delight-im/PHP-Str/blob/8fd0c608d5496d43adaa899642c1cce047e076dc/ src/Str.php # L363), come trovato in [questa libreria autonoma] (https://github.com/delight-im/PHP-Str). – caw

risposta

37
$pieces = explode(" ", $inputstring); 
$first_part = implode(" ", array_splice($pieces, 0, 5)); 
$other_part = implode(" ", array_splice($pieces, 5)); 

explode pause dell'originale stringa in una serie di parole, array_splice consente di ottenere determinati intervalli di tali parole, quindi implode combina nuovamente gli intervalli in stringhe singole.

+7

Usa 'explode (" ", $ inputstring, 6)' per salvare l'esplosione quando non è necessario. – salathe

5
<?php 
$words = explode(" ", $string); 
$first = join(" ", array_slice($words, 0, 5)); 
$rest = join(" ", array_slice($words, 5)); 
+2

'str_split' non fa quello che pensi che faccia. – Amber

+1

Concordato con @Amber, 'str_split' converte il primo argomento in un array, [non ha una firma come quella qui indicata] (http://php.net/manual/en/function.str-split. php) –

+0

Grazie. Di solito ottengo 'str_split' e' explode' mix up. Risolto il problema della sorveglianza secondaria. – Kenaniah

15

Quanto segue dipende fortemente da cosa si definisce come una parola ma è un cenno in un'altra direzione, lontano dal semplice explode -ing.

$phrase = "All the ancient classic fairy tales have always been scary and dark."; 
echo implode(' ', array_slice(str_word_count($phrase, 2), 0, 5)); 

tutti gli antichi fata classico


Un'altra alternativa, dal momento che tutti amano regex, sarebbe qualcosa di simile:

preg_match('/^(?>\S+\s*){1,5}/', $phrase, $match); 
echo rtrim($match[0]); 
+0

Quest'ultimo è terso. +1 –

+0

questo ha funzionato per me, grazie –

0
implode(' ', array_slice(explode(' ', $contents), 0, 5)); 

Nota: qui all'ultimo si può vedere 0, 10 stamperà dalla parola iniziale alla decima parola, quindi è possibile correggere come si desidera iniziare dalla parola al numero totale di parole.

+0

Non abbastanza buono per esplodere gli spazi. – 4EACH

Problemi correlati