2010-12-12 9 views
0

Ich habe einen String Trade Card Catalogue 1988 Edition Ich wünsche, dass alles zu entfernen, abgesehen von 1988alle Zeichen in Zeichenfolge abgesehen von PHP

Ich könnte ein Array aller Buchstaben haben und tun ein str_replace und trim, aber ich fragte mich, ob dies eine bessere Lösung?

$string = 'Trade Card Catalogue 1988 Edition'; 
$letters = array('a','b','c'....'x','y','z'); 
$string = str_to_lower($string); 
$string = str_replace($letters, '', $string); 
$string = trim($string); 

Vielen Dank im Voraus

+0

Was wollen Sie wirklich tun? Entfernen Sie jedes Zeichen, um eine Zahl aus der Zeichenfolge zu filtern? Oder irgendetwas anderes? – Nedec

Antwort

4

Regulärer Ausdruck?

So vorausgesetzt, wollen Sie die Zahl (und nicht das 4. Wort oder so ähnlich):

$str = preg_replace('#\D#', '', $str); 

\D bedeutet jedes Zeichen, das keine Ziffer ist. Das gleiche wie [^0-9].

Wenn es mehr Zahlen geben könnte, aber Sie nur eine vierstellige Zahl (ein Jahr) erhalten möchten, funktioniert das auch (aber offensichtlich scheitert es, wenn Sie mehrere vierstellige Zahlen haben und Sie eine bestimmte erhalten möchten) :

$str = preg_replace('#.*?(\d{4,4}).*#', '\1', $str); 
+2

Sie könnten es in 'preg_replace' ändern. – codaddict

+0

@codaddict: Ups danke. –

+1

'{4}' ist eine bequeme Abkürzung für '{4,4}' –

1

Sie können die gesamte Menge von Zeichen passieren eigentlich nur als Parameter trim getrimmt werden:

$string = trim($string, 'abc...zABC...Z ' /* don't forget the space */); 
Verwandte Themen