2011-01-09 10 views
6

Ich hasse reguläre Ausdrücke und ich hatte gehofft, jemand könnte mit einem regulären Ausdruck helfen, mit preg_replace verwendet werden.preg_replace - Entfernen Sie unerwünschte Zeichen aus der Zeichenfolge, um den numerischen Wert zurückzugeben

Ich möchte unerwünschte Zeichen aus einer Zeichenfolge entfernen, um mit preg_replace nur einen numerischen Wert zurückzugeben.

Der String-Format könnte wie folgt aussehen:

SOME TEXT £ 100

£ 100 SOME TEXT

SOME TEXT 100 SOME TEXT

Vielen Dank

+1

Also alle diese Ausbeute 100, richtig? Was passiert mit "1abc00"? – BoltClock

+1

Besser noch - was ist mit £ 1,00? – Kobi

Antwort

16
$NumericVal = preg_replace("/[^0-9]/","",$TextVariable); 

die^innerhalb der [] bedeutet, alles mit Ausnahme der folgenden

bearbeiten entfernt überflüssige +

+1

sehr effizient, ausgezeichnete Antwort –

+0

Warum nicht '\ D' aus Neugier ... verwenden? viele Antworten auf Web verwenden nicht-Nummer statt der eingebauten "nicht digit" – nicorellius

+0

@nicorellius Ich schrieb dies wirklich schnell, wenn ich antwortete, so dachte nicht wirklich zu verwenden es ist alles, und habe nicht daran gedacht, seit zu Bearbeiten Sie es, um \ d zu verwenden. Obwohl es für Menschen ohne gute Kenntnisse der verschiedenen Regex-Optionen besser lesbar ist. –

0
preg_replace('/[^0-9]/','',$text); 
+0

Dies gibt '100' auch für Boltclocks Beispiel. – AndreKR

+0

Sie brauchen das + sonst wird es nur die erste Nicht-Nummer ersetzen –

+1

Nein, das ist teilweise wahr für 'preg_match', aber nicht für' preg_replace'. Wie bei jedem normalen Ersetzen ersetzen 'preg_replace' jedes Vorkommen eines Zeichens, das' [^ 0-9] 'ist, durch nichts und setzt dann seine Suche mit dem nächsten Zeichen fort. – AndreKR

0

Versuchen Sie Folgendes:

preg_replace("/\D+/", "", "SOME TEXT £100") 

Sie auch preg_match bekommen die erste Nummer verwenden:

preg_match("/\d+/", "SOME TEXT £100", $matches); 
$number = $matches[0]; 
8
$l = preg_replace("/[^A-Z0-9a-z\w ]/u", '', $l); 

Works Hexe UTF-8, erlauben nur A-Z a-z 0-9 łwóc ... usw.

Verwandte Themen