Autor Zpráva
Pan X
Profil
Zdravím,
potřebuji nějakým způsobem rozdělit řetězec do array s tím, aby se zachovali všechny znaky.

Mám tento řetezec: Dnes(12.6.2001) se kona .... Vsichni mohou prijit. a já tento text potřebuji po jednotlivých slovech rozsekat do array. Takto:

array(10) {
  [0]=>
  string(0) ""
  [1]=>
  string(4) "Dnes"
  [2]=>
  string(11) "(12.6.2001)"
  [3]=>
  string(2) "se"
  [4]=>
  string(4) "kona"
  [5]=>
  string(4) "...."
  [6]=>
  string(7) "Vsichni"
  [7]=>
  string(5) "mohou"
  [8]=>
  string(7) "prijit."
  [9]=>
  string(0) ""
}


problém je že pokud použiju
$key = preg_split("/[\s(]+/", $text);


tak mi obsah v závorce tu začáteční odstraní v array zbyde
  [2]=>
  string(10) "12.6.2001)"


Jak to upravit tak aby to závorku zachovalo celou?

Předem díky
motik
Profil
Pan X:
a funkce
explode();
by ti nepomohla?

EDIT:
$text = str_replace('(', ' (', $text);
T.Thomas
Profil *
motik:
Funkce
explode()
by v tomto případě vypsala pouze 2 pole (před závorkou, a zbytek v celku). Pokud by se Pan X pro ni rozhodl, musel by jako oddělovač použít mezeru.
Johnik
Profil
Spíš bych v prvním kroku nahradil buď "Dnes" za "Dnes " nebo závorku, když před sebou nemá mezeru na " (".
Pak bych použil explode s mezerou jako oddělovač.
Majkl578
Profil
$text = 'Dnes(12.6.2001) se kona .... Vsichni mohou prijit.'; 
$textAry = preg_split('~(\s+|(?=\())~u', $text); 
var_dump($textAry);
Neuvedl co jsou ty tečky a jak se s nimi má naložit (taky rozdělit nebo nechat), takže teď je to rozdělí.
motik
Profil
T.Thomas:
by v tomto případě vypsala pouze 2 pole (před závorkou, a zbytek v celku).
napsal jsem jen název funkce (ať se Pan X taky zapojí), ta druhá funkce (resp. by měla být první) není explode(), ale str_replace() a ta ti "doplní" tu mezeru před závorku.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0