2017-10-22 1 views
1

Ich versuche eine Zeichenkette [F] [C] [Fa] [Co] durch das Trennzeichen "]" aufzuteilen, und ich möchte sie im selben Wert behalten.Getrennte Zeichenfolge, die das Trennzeichen im selben Schlüsselwert speichert

Ich habe ein Problem, da es das Trennzeichen aber in einem anderen Array-Feld behält.

Mein Code:

$str = '[F][C][Fa][Co]'; 
$result = preg_split('/([\]])/', $str, -1, PREG_SPLIT_DELIM_CAPTURE); 
var_dump($result); 

Erwartetes Ergebnis:

$array[0] = [F] 
$array[1] = [C] 
$array[2] = [Fa] 
$array[3] = [Co] 

Was ich bekomme:

array(9) { [0]=> string(2) "[F" [1]=> string(1) "]" [2]=> string(2) "[C" [3]=> string(1) "]" [4]=> string(3) "[Fa" [5]=> string(1) "]" [6]=> string(3) "[Co" [7]=> string(1) "]" [8]=> string(0) "" } 

Wie kann ich geht das Trennzeichen zu jedem Wert?

+1

'preg_split ('/ \ [\ w + \] \ K /', $ str, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY); ' – splash58

+0

Danke für Ihre Hilfe. Es wirkt wie ein Zauber: D – Tiago

Antwort

1

Aber Sie wollen nicht teilen. Sie möchten übereinstimmen.

preg_match_all('/\[\w+\]/',$str,$matches); 
var_dump($matches[0]); 
0

Obwohl ich @ Niet-Verfahren verwenden würde, ist hier, wie Ihr beheben:

Sie benötigen einen lookbehind (oder Null Breite Behauptung) und die PREG_SPLIT_NO_EMPTY Flagge des letzten leeres Element loszuwerden:

<?php 
$str = '[F][C][Fa][Co]'; 
$result = preg_split('/(?<=\])/', $str, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY); 
var_dump($result); 

Ergebnis

array (4) {[0] => string (3) "[F]" [1] => string (3) "[C]" [2] => string (4) "[Fa]" [ 3] => string (4) "[Co]"}

Demo

Verwandte Themen