66

文字列[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で見つけた他のコードも、発音区別符号(á、ñ、ž...)を削除します。

4

6 に答える 6

168

西アラビア数字(0〜9)の場合:

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

西アラビア語(例:インド)を含むすべての数字の場合:

$words = '१३३७';
$words = preg_replace('/\d+/u', '', $words);
var_dump($words); // string(0) ""
  • \d+複数の数字に一致します。
  • 修飾子/uは、Unicode文字列処理を有効にします。この修飾子は重要です。そうでないと、数字が一致しません。
于 2013-01-09T13:22:03.343 に答える
54

正規表現で試してください\d

$words = preg_replace('/\d/', '', $words );

\dは、[0-9]からの範囲の数値に相当するものに相当し0ます9

于 2013-01-09T13:22:11.753 に答える
6

[0-9]またはのような正規表現を使用します\d

$words = preg_replace('/\d+/', '', $words );

preg_replace()のドキュメントが直接示されているので、このドキュメントを読むことをお勧めします。

于 2013-01-09T13:23:44.783 に答える
2

定義済みの文字範囲を使用する

echo $words= preg_replace('/[[:digit:]]/','', $words);

于 2016-08-12T06:00:17.123 に答える
0

正規表現

   $words = preg_replace('#[0-9 ]*#', '', $words);
于 2015-04-16T09:46:52.860 に答える