2016-11-04 5 views
-1

Ich suche nach einer Möglichkeit, ein Muster in einer PHP-Zeichenfolge zu finden. Ich bin mir bewusst, preg_match function aber, dass nur ein 1 oder 0Finden Muster in String PHP

zurückgibt Ich habe einige Angebote wie diese

'5% Rabatt auf Baby-Briefpapier'

'$ 10 Rabatt auf Bestellungen über $ 50'

'$ 5 Off Bestellungen über $ 30'

'$ 7.50 Off Bestellungen über $ 40'

‚5% f Bestellung '

'11% Rabatt auf jeden Kauf'

'5 $ Rabatt auf Bestellungen über $ 50'

'10% Rabatt auf alle Hüllen

'$ 10 Rabatt auf Bestellungen über $ 100'

'$ 3 Lieferung bei jedem Kauf'

Was ich versuche $ x oder $ xx oder $ xxx oder x% oder xx% oder xx zu tun ist, erhalten x% aus den Deal-Texten.

Ich möchte vielmehr die tatsächlichen Werte bekommen, als zu überprüfen, ob das Muster existiert.

Zum Beispiel von

'$ 10 Rabatt auf Bestellungen über $ 100',

Ich mag $ 10 und $ 100 erhalten und sie in einer Variablen speichern.

+0

Was haben Sie versucht? Ihre Samples enthalten Strings mit zwei Vorkommen von z. $ ##, was sollte dann abgestimmt werden? zuerst, zuletzt, alles? – nozzleman

Antwort

0

Die Funktion preg_match_all() können die Spiele auf eine andere Variable (dritte Parameter der Funktion) zu speichern, verwendet werden.

$str = '$10 Off Orders Over $100'; 
$matches = []; 
$pattern = '/\$[0-9]*\.{0,1}[0-9]+/'; 
preg_match_all($pattern, $str, $matches); 

echo $matches[0][0]; // $10 
echo $matches[0][1]; // $100 
+0

Beachten Sie, dass Ihr Muster zur Zeit nicht mit $ 5 übereinstimmt. OP-Beispiele enthalten keine Dezimalwerte, daher müssen Sie sie möglicherweise nicht zuordnen. Andernfalls können Sie '[0-9] + (?: \. [0-9] +)?' Für den Zahlenteil verwenden. –

+0

Redigierte meine Antwort. Habe gerade das erste '+' in '*' geändert. Einige der OP-Beispiele enthalten Dezimalwerte wie $ 7.50. –

+0

Auch müssen Sie die Prozentwerte sowie –