2016-04-20 12 views
1

Ich habe diese Zeichenfolge &OrigPlacedDate=41759.7128& und ich möchte die Zahlen mit den Zeitraum an der richtigen Stelle übereinstimmen. Ich habe versucht mitWillst du preg_match Zahlen und Zeitraum php

$string = '&OrigPlacedDate=41759.7128&' 
$origPlacedDate = '/&OrigPlacedDate=[0-9^\.]*&/'; 
preg_match($origPlacedDate, $string, $origPlacedDateMatches); 
$origPlacedDate = preg_replace('/[^0-9]/', '', $origPlacedDateMatches); 
print_r($origPlacedDate); 

aber ich bekomme nur die Zahlen.

Array ([0] => 417597128) 

Schließlich möchte ich eine Leistung von 41759,7128

+0

Was die gewünschte Ausgabe sein würde? Ich verstehe nicht, was * übereinstimmende Zahlen mit Punkten * bedeutet. Was genau willst du passieren? – Marcus

+0

Sie konnten dieses Array sowieso nicht bekommen - Sie haben keine Capture-Gruppen ('()'), so dass die einzige Sache, die in $ origPlacedDateMatches gehen würde, die gesamte übereinstimmende Zeichenfolge wäre. –

+0

@MarcB Ich habe etwas von meinem Code verpasst, als ich die Frage gestellt habe, sie wurde nicht aktualisiert. – JavaJava21

Antwort

0

Sie wurden passende Zahlen erhalten, aber Sie wurden die . im regulären Ausdruck nicht darunter. Versuchen Sie folgendes:

$string = '&OrigPlacedDate=41759.7128&'; 
$origPlacedDate = '/&OrigPlacedDate=[0-9^\.]*&/'; 
preg_match($origPlacedDate, $string, $origPlacedDateMatches); 
$origPlacedDate = preg_replace('/[^0-9\.]/', '', $origPlacedDateMatches); 
print_r($origPlacedDate); 

Ausgang:

Array 
(
    [0] => 41759.7128 
) 
0

Warum nicht einen einfacheren Ansatz zu verwenden, indem Sie einen einfachen regulären Ausdruck?

$string = '&OrigPlacedDate=41759.7128&'; 
$origPlacedDate = '/&OrigPlacedDate=([0-9]+\.[0-9]+)&/'; 
preg_match($origPlacedDate, $string, $origPlacedDateMatches); 
echo $origPlacedDateMatches[1]; 

Es gibt:

41759,7128