Je voudrais supprimer tous les nombres d'une chaîne [0-9]. J'ai écrit ce code qui fonctionne:
$words = preg_replace('/0/', '', $words ); // remove numbers
$words = preg_replace('/1/', '', $words ); // remove numbers
$words = preg_replace('/2/', '', $words ); // remove numbers
$words = preg_replace('/3/', '', $words ); // remove numbers
$words = preg_replace('/4/', '', $words ); // remove numbers
$words = preg_replace('/5/', '', $words ); // remove numbers
$words = preg_replace('/6/', '', $words ); // remove numbers
$words = preg_replace('/7/', '', $words ); // remove numbers
$words = preg_replace('/8/', '', $words ); // remove numbers
$words = preg_replace('/9/', '', $words ); // remove numbers
Je voudrais trouver une solution plus élégante: 1 code de ligne (écrire un code Nice est important).
L'autre code que j'ai trouvé dans stackoverflow supprime également les signes diacritiques (á, ñ, ž ...).
Pour les nombres arabes occidentaux (0-9):
$words = preg_replace('/[0-9]+/', '', $words);
Pour tous les chiffres , y compris l'arabe occidental (par exemple indien ):
$words = '१३३७';
$words = preg_replace('/\d+/u', '', $words);
var_dump($words); // string(0) ""
\d+
correspond à plusieurs chiffres./u
active le traitement de chaîne unicode. Ce modificateur est important, sinon les chiffres ne correspondraient pas.Essayez avec regex \d
:
$words = preg_replace('/\d/', '', $words );
\d
est un équivalent pour [0-9]
qui est un équivalent pour les nombres vont de 0
à 9
.
Utilisez des expressions rationnelles comme [0-9]
ou \d
:
$words = preg_replace('/\d+/', '', $words );
Vous voudrez peut-être lire la documentation preg_replace () car elle y est directement indiquée.
Utiliser des plages de caractères prédéfinies
echo $words= preg_replace('/[[:digit:]]/','', $words);
Regex
$words = preg_replace('#[0-9 ]*#', '', $words);