2009-04-03 7 views
1

Haben Sie die folgende Zeichenfolge, die ich teilen muss.Split String in Teile PHP

$string = "This is string sample - $2565"; 
$split_point = " - "; 

One: Ich brauche einen regulären Ausdruck oder anderes Spiel und geben Sie mit dem aufgespalten wird, um die Zeichenfolge in zwei Teile spalten zu können.

Zweitens: Auch wollen Sie eine preg_match für $ und dann nur Zahlen rechts von $ greifen.

Irgendwelche Vorschläge?

Antwort

6
$split_string = explode($split_point, $string); 

und

preg_match('/\$(\d*)/', $split_string[1], $matches); 
$amount = $matches[1]; 

Wenn Sie wollen, dies alles in einem regex mit getan werden könnte:

$pattern = '/^(.*)'.preg_quote($split_point).'\$(\d*)$/' 

preg_match($pattern, $string, $matches); 
$description = $matches[1]; 
$amount = $matches[2]; 
+0

benötigen Bitte Um unerwartete Fehler zu vermeiden, fügen Sie preg_quote um den $ split_point im Regex-Beispiel hinzu. – Willem

1
$parts = explode ($split_point, $string); 
/* 
$parts[0] = 'This is string sample' 
$parts[1] = '$2565' 
*/ 
1

Zwei weitere Antworten haben explode() erwähnt, aber Sie können auch Begrenzen Sie die Anzahl der Teile, in die die Quellzeichenfolge aufgeteilt werden soll. Zum Beispiel:

$s = "This is - my - string."; 
list($head, $tail) = explode(' - ', $s, 2); 
echo "Head is '$head' and tail is '$tail'\n"; 

Werden Ihnen gegeben:

Head is 'This is' and tail is 'my - string.' 
+0

Ist nicht die Ausgabe: Head ist 'This is-' und Tail ist 'my - string'. ? – Codex73

+0

Nein, definitiv nicht. Ich habe es sogar in der PHP REPL vor dem Posten überprüft. –

+0

also was ist mit dem ersten geschehen? – Codex73

0

explode die richtige Lösung für Ihren speziellen Fall ist, aber preg_split ist, was Sie wollen, wenn Sie jemals regulären Ausdrücke für den Separator