如何从字符串中删除所有数字?

2022-08-30 08:57:30

我想从字符串 [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中找到的其他代码也删除了音调符号(á,ñ,ž...)。


答案 1

对于西方阿拉伯数字 (0-9):

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

对于所有数字,包括西方阿拉伯语(例如印度):

$words = '१३३७';
$words = preg_replace('/\d+/u', '', $words);
var_dump($words); // string(0) ""
  • \d+匹配多个数字。
  • 修饰符启用 Unicode 字符串处理。此修饰符很重要,否则数字将不匹配。/u

答案 2

尝试使用正则表达式 :\d

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

\d是等价物,其等效项是范围从 到 的数字的等价物。[0-9]09


推荐