Estoy tratando de dividir cadenas a la mitad, y no debe dividirse en el medio de una palabra.Separar cadenas por la mitad (Word-Aware) con PHP
Hasta el momento se me ocurrió lo siguiente, que es el 99% de trabajo:
$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));
Esto funciona, dividiendo correctamente cualquier cadena en medio de acuerdo con el número de palabras en la cadena. Sin embargo, es la eliminación de todos los símbolos en la cadena, por ejemplo, para el ejemplo anterior seria:
The Quick Brown Fox Jumped
Over The Lazy Dog
necesito mantener todos los símbolos como: y/en la cadena después de ser dividida. No entiendo por qué el código actual es la eliminación de los símbolos ... Si usted puede proporcionar un método alternativo o fijar este método para no quitar los símbolos, que sería muy apreciada :)
Gracias, definitivamente podría ser útil elegir si la primera o segunda cadena obtiene la palabra dividida. En mi proyecto actual me gustaría dar más a string1, y usando mi ejemplo original de 'quick brown fox' tu código funciona como debería, sin embargo, las pruebas con otras cadenas parecen tener resultados mixtos, por ejemplo '$ text =" one two tres cuatro cinco uno dos tres cuatro cinco ";' da como resultado que string1 sea solo 'one two three four'.En cualquier caso, le estoy dando la respuesta porque su primer código hace el trabajo exactamente como lo pedí. – Leo44
En realidad, después de más pruebas, creo que el segundo código funciona como debería, a menos que el medio punto exacto de la cadena sea un espacio. Probablemente eso no ocurra a menudo, así que funcionará bien :) – Leo44
Sugerencia alternativa para dar más a string1: $ middle = strpos ($ name, '', floor (strlen ($ name) * 0.5)); – cmc