2016-07-31 30 views
-1

Ich habe eine Zeichenfolge, die Feldplatzhalter enthält. Ich muss die Zeichenfolge nach diesen Platzhaltern aufteilen und die Zeichenfolge und die Platzhalter in einem einzelnen Array zurückgeben.Verwenden Sie PHP, um String nach Tags zu teilen und jedes Tag durch eindeutige Werte zu ersetzen

Zum Beispiel, wenn ich hatte die Zeichenfolge:

Ohio is one of the original [s] in the northwest territory. [s] and [s] were also part of the northwest territory. Which states are missing [a]? 

Ich mag würde es in ein Array aufgeteilt, um zu sehen:

[0] => Ohio is one of the original 
[1] => [s] 
[2] => in the northwest territory. 
[3] => [s] 
[4] => and 
[5] => [s] 
[6] => were also part of the northwest territory. Which states are missing 
[7] => [a] 
[8] => ? 

zu erfüllen diejenigen, die davon ausgehen, wir Handbücher nie gelesen, hier sind ein paar Stücke von Code, den ich ausprobiert habe ... Ich kann das Array nicht in dem oben aufgeführten Format bekommen. Der nächste, den ich habe, ist das, aber es bekommt immer noch mehr Text als ich in einigen Teilen des Arrays brauche. Ich gebe zu, ich war nie ein REGEX-Experte, also wird Ihre Hilfe geschätzt.

Ich bin auf einem Charakter passend eingeschlossen in [], dh [a], [b], [e] usw.

preg_match_all("/(.*?)\[(.)\](.*?)/",$string,$x,PREG_SET_ORDER); 
print_r($x); 
+3

Haben Sie etwas noch versuchen? Wie wäre es mit http://php.net/manual/en/function.preg-split.php – rjdown

+0

Es ist einfach, RTFM an jemanden zu werfen, nicht wahr? Ja, ich habe mit preg_match, preg_split, preg_match_all und einer Anzahl von verschiedenen Permutationen von allen drei gespielt, aber ich dachte mir, dass ich gerade etwas einfach vermisste. – LuvnJesus

Antwort

1

Während ich ursprünglich von der anstößigen Antwort von rjdown beleidigt wurde, Ich habe alle meine Beispiele erneut besucht und eine funktionierende Option gefunden. Einschließlich der "-1" war es schließlich der Trick. Dank rjdown

$results =preg_split("/(\[.\])/i",$string, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE); 

Das Ergebnis ist:

Array 
(
    [0] => Ohio is one of the original 
    [1] => [s] 
    [2] => in the northwest territory. 
    [3] => [s] 
    [4] => and 
    [5] => [s] 
    [6] => were also part of the northwest territory. Which states are missing 
    [7] => [a] 
    [8] => ? 
) 
+0

Obnoxious? Alles, was du gepostet hast, war, was du machen wolltest, ohne Beweise dafür, dass du irgendetwas versucht hast, um es zu lösen. So funktioniert stackoverflow nicht. In die Richtung einer möglicherweise nützlichen Funktion zu zeigen, ist mehr als die meisten hier tun. Normalerweise erhalten Sie nur einen Link zu http://stackoverflow.com/help/how-to-ask – rjdown