我想删除字符串[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中找到的其他代码也删除了Diacritics(á,ñ,ž......)。
答案 0 :(得分:114)
对于西方阿拉伯数字(0-9):
$words = preg_replace('/[0-9]+/', '', $words);
对于所有数字,包括西方阿拉伯语(例如Indian):
$words = '१३३७';
$words = preg_replace('/\d+/u', '', $words);
var_dump($words); // string(0) ""
\d+
匹配多个数字。/u
启用unicode字符串处理。此修饰符很重要,否则数字将不匹配。答案 1 :(得分:45)
尝试使用正则表达式\d
:
$words = preg_replace('/\d/', '', $words );
\d
是[0-9]
的等效词,相当于0
到9
的数字。
答案 2 :(得分:5)
使用某些正则表达式,例如[0-9]
或\d
:
$words = preg_replace('/\d+/', '', $words );
您可能需要阅读preg_replace() documentation,因为这会直接显示在那里。
答案 3 :(得分:1)
使用预定义的字符范围
echo $words= preg_replace('/[[:digit:]]/','', $words);
答案 4 :(得分:1)
或者,您可以这样做:
$words = trim($words, " 1..9");
答案 5 :(得分:0)
正则表达式
$words = preg_replace('#[0-9 ]*#', '', $words);