PHP String in zwei Teile teilen

Agratos

Lt. Commander
Registriert
Mai 2010
Beiträge
1.442
Hey,

Situation ist folgende:
Ich habe einen Text, den ich auf zwei Spalten aufteilen will (ca gleich lang).
Da ich den Text aus einer Datenbank auslese, muss ich ihn also auf zwei Teile aufteilen.
Deswegen zähle ich die Zeichen, teile durch zwei und runde ggf. auf und
achte dabei darauf, dass kein Wort abgeschnitten wird.

PHP:
$zeichen = strlen($string["text"]);
$haelfte = ceil($zeichen / 2);
$links = preg_replace("/[^ ]*$/", '', substr($string["text"], 0, $haelfte));

Jetzt weiß ich leider nicht, wie ich das bis zum Ende hinbekommen soll,
da ja darauf geachtet wird, kein Wort abzuschneiden.

Danke schon mal für eure Hilfe,
Agra

Edit: Also ich muss von $haelfte zurück zum Anfang des abgeschnittenen Wortes.
 
Zuletzt bearbeitet:
Von der Theorie sollte es vielleicht so gehen:

- Textlänge ermitteln und durch 2 teilen (strlen)
- Im ersten Teil das letzte Vorkommen eines Leerzeichen suchen (strpos)
- Dann erneut den Text teilen:
- Teil 1 von 0 - Position Leerstelle im ersten Teil
- Teil 2 von Position Leerstelle+1 bis Ende
 
Gute Idee, danke.
 
PHP:
$holder = explode( " ", $string ); // Trennt den String nach Leerzeichen, schreibt die einzelnen Werte in Array

$data = array_chunk( $holder, ceil(sizeof($holder)/2) ); // Teilt $holder in neue Arrays, schreibt diese in $data (numerisch indiziert). Die größe der neuen aufgeteilten Arrays (max. Anzahl Indizes) wird durch den 2 Parameter angeben

Das wäre eine weitere Lösung.
Ich bevorzuge normalerweise Lösungen per Array, mag ich einfach lieber für späteres Durchlaufen mit Schleifen und Ähnlichem.


Ansatz:

$string wird nach Leerzeichen getrennt, die einzelnen gefunden Werte in das Array $holder geschrieben.

$holder wird durch array_chunk geteilt, da als "Teilungsgröße" min. die Hälfte von $holder angegeben wird, wird $holder in 2 neue Arrays aufgeteilt, die numerisch indiziert die einzelnen Stringteile enthalten.
 
Habe schon die Lösung von syntec umgesetzt, trotzdem danke.
 
bitte bitte^^

Vielleicht hilft der Lösungsansatz dann ja auch bei zukünftigen Problemen, wo es nicht explizit um einen String geht, diese (syntec) Lösungsmethode also wegfallen würde...

Mit der Arrayvariante kannst ja alles teilen was du willst...MySQL-Datensätze z.B.^^
 
Zurück
Oben