1. ホーム
  2. php

[解決済み] 文字列からすべての数字を削除するには?

2022-02-03 07:17:55

質問

文字列[0-9]からすべての数字を削除したいのですが、どうすればいいですか?このようなコードを書きましたが、動作しています。

$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

もっとエレガントな解決策を見つけたいのですが。1行のコード(IMOは素敵なコードを書くことが重要です)。

stackoverflowで見つけた他のコードも、ダイアクリティクス(á,ñ,ž...)を削除しています。

どのように解決するのですか?

西暦アラビア数字(0-9)の場合。

$words = preg_replace('/[0-9]+/', '', $words);

すべての数字について 西アラビア語含む (例) インド人 ):

$words = '१३३७';
$words = preg_replace('/\d+/u', '', $words);
var_dump($words); // string(0) ""

  • \d+ は複数の数字にマッチします。
  • モディファイアの /u はユニコード文字列処理を可能にする。このモディファイアは重要で、さもないと数字がマッチしない。