Sto provando a dividere le stringhe a metà e non dovrebbe essere diviso nel mezzo di una parola.Stringhe divise a metà (Word-Aware) con PHP
Finora mi si avvicinò con la seguente, che è il 99% di lavoro:
$text = "The Quick : Brown Fox Jumped Over The Lazy/Dog";
$half = (int)ceil(count($words = str_word_count($text, 1))/2);
$string1 = implode(' ', array_slice($words, 0, $half));
$string2 = implode(' ', array_slice($words, $half));
Questo funziona, suddividendo correttamente qualsiasi stringa a metà in base al numero di parole nella stringa. Tuttavia, è la rimozione qualsiasi simbolo nella stringa, ad esempio per l'esempio precedente si visualizzerà:
The Quick Brown Fox Jumped
Over The Lazy Dog
devo mantenere tutti i simboli come: e/nella stringa dopo essere stato diviso. Non capisco il motivo per cui il codice attuale sta rimuovendo i simboli ... Se è possibile fornire un metodo alternativo o correggere questo metodo di non rimuovere i simboli, che sarebbe molto apprezzato :)
Grazie, potrebbe essere sicuramente utile scegliere se la prima o la seconda stringa ottiene la parola divisa. Nel mio progetto attuale vorrei dare di più a string1, e usando il mio originale esempio 'quick brown fox' il tuo codice funziona come previsto, tuttavia testare con altre stringhe sembra avere risultati misti, ad esempio '$ text =" one two tre quattro cinque uno due tre quattro cinque ";' risulta che string1 è solo "uno due tre quattro".In ogni caso ti sto dando la risposta perché il tuo primo codice fa il lavoro esattamente come ho chiesto. – Leo44
In realtà, dopo ulteriori test, credo che il secondo codice funzioni come previsto, a meno che il mezzo punto esatto della stringa non sia uno spazio. Probabilmente non succederà spesso, quindi funzionerà benissimo :) – Leo44
Suggerimento alternativo di dare di più a string1: $ middle = strpos ($ name, '', floor (strlen ($ name) * 0.5)); – cmc