Mám skupinu strún, ktoré musím vytrhnúťdo poľa. Reťazec je potrebné rozdeliť na „/“, „,“, „pomocou“ alebo „&“. Bohužiaľ je možné, aby reťazec obsahoval dva reťazce, ktoré je potrebné rozdeliť, takže nemôžem použiť rozdelenie alebo explóziu.
Napríklad reťazec by mohol povedať „prvá minulosť / ísť ďalej a potom sa otočiť“, takže sa snažím získať pole, ktoré by sa vrátilo pole („prvá minulosť“, „presahujúce rámec“, „potom odbočte“)
Kód, ktorý momentálne používam, je
$ splittersArray = array ("/", ",", "with", "&"); foreach ($ spltersArray ako $ splitter) { if (strpos ($ string, $ splitter)) { $ splitString = split ($ splitter, $ string); foreach ($ splitString ako $ split) {
Nezdá sa mi, že by v PHP našiel nejakú funkciudovoľuje mi to urobiť. Musím prechádzať strunou späť do hornej časti lievika a pokračovať v prechádzaní cez „foreach“ aj po tom, ako sa struna znovu a znovu rozdelí?
Nezdá sa to veľmi efektívne. Akékoľvek návrhy by boli skvelé. Vďaka, pete
odpovede:
8 pre odpoveď č. 1Použite regulárny výraz a preg_split.
V prípade, že spomeniete, rozdelené pole získate:
$splitString = preg_split("/(/|,| with |&/)/", $string);