Ho una stringa simile alla seguenteCome far esplodere questa strana stringa in PHP?
DAS-1111[DR-Helpfull-R]-RUN--[121668688374]-N-[+helpfull_+string]
La stringa di cui sopra è una sorta di formattata in gruppi che è simile al seguente:
A-B[C]-D-E-[F]-G-[H]
Il pensare è che mi piace di elaborare alcuni di quelli gruppi, e mi piace fare qualcosa come esplodere.
dire come, perché ho provate questo codice:
$string = 'DAS-1111[DR-Helpfull-R]-RUN--[121668688374]-N-[+helpfull_+string]';
$parts = explode('-', $string);
print_r($parts);
e ottengo il seguente risultato:
Array
(
[0] => DAS
[1] => 1111[DR
[2] => Helpfull
[3] => R]
[4] => RUN
[5] =>
[6] => [121668688374]
[7] => N
[8] => [+helpfull_+string]
)
che non è quello che mi serve.
cosa ho bisogno è il seguente output:
Array
(
[0] => DAS
[1] => 1111[DR-Helpfull-R]
[2] => RUN
[3] =>
[4] => [121668688374]
[5] => N
[6] => [+helpfull_+string]
)
Qualcuno può suggerire un modo piacevole ed elegante per esplodere questa stringa nel modo in cui ho bisogno?
quello che ho dimenticato di menzionare, è che la stringa può avere più o meno gruppi. Esempi:
DAS-1111[DR-Helpfull-R]-RUN--[121668688374]-N-[+helpfull_+string]
DAS-1111[DR-Helpfull-R]-RUN--[121668688374]
DAS-1111[DR-Helpfull-R]-RUN--[121668688374]-N-[+helpfull_+string]-anotherPart
Update 1
Come accennato dal @axiac, il preg_split
può fare il lavoro. Ma puoi aiutarmi per favore con la regex adesso?
devo provare questo, ma sembra che non è corretto:
(?!\]\-)\-
Sembra un lavoro per [ 'preg_split()'] (http://php.net/manual/en/function.preg-split.php). – axiac
La stringa è composta da gruppi di lunghezza fissa? Quindi, la prima colonna (DAS nel tuo esempio) sarà sempre i primi tre caratteri? I secondi 18 caratteri ecc.? –
@axiac Mmm non sapevo questa funzione. Sto cercando di tornare di nuovo :) –