2010-12-12 37 views
0

j'ai une chaîne Trade Card Catalogue 1988 Edition Je veux supprimer tout sauf 1988.Remplacer tous les caractères dans la chaîne en dehors de PHP

Je pourrais avoir un tableau de toutes les lettres et faire un str_replace et trim, mais je me demandais si cela était une meilleure solution?

$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); 

Merci à l'avance

+0

que voulez-vous vraiment faire? Supprimer chaque caractère afin de filtrer un nombre de la chaîne? Ou autre chose? – Nedec

Répondre

4

Expression régulière?

Donc, en admettant que vous voulez que le numéro (et non le 4 mot ou de quelque chose comme ça):

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

\D signifie tous les caractères qui ne sont pas un chiffre. Identique à [^0-9].

S'il peut y avoir plus de numéros mais que vous ne voulez obtenir qu'un nombre à quatre chiffres (un an), cela fonctionnera également (mais échoue évidemment si vous avez plusieurs numéros à quatre chiffres et que vous voulez en obtenir un) :

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

Vous pourriez vouloir le changer en 'preg_replace'. – codaddict

+0

@codaddict: Oups merci. –

+1

'{4}' est un raccourci pratique pour '{4,4}' –

1

vous pouvez réellement passer simplement l'ensemble des caractères à rogner comme paramètre à trim:

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