我想删除字符串[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
Run Code Online (Sandbox Code Playgroud)
我想找到一个更优雅的解决方案:1行代码(IMO编写好的代码很重要).
我在stackoverflow中找到的其他代码也删除了Diacritics(á,ñ,ž...).
Dan*_*Lee 125
对于西方阿拉伯数字(0-9):
$words = preg_replace('/[0-9]+/', '', $words);
Run Code Online (Sandbox Code Playgroud)
所有数字包括西方阿拉伯语(例如印度语):
$words = '????';
$words = preg_replace('/\d+/u', '', $words);
var_dump($words); // string(0) ""
Run Code Online (Sandbox Code Playgroud)
\d+
匹配多个数字./u
启用unicode字符串处理.此修饰符很重要,否则数字将不匹配.hsz*_*hsz 46
试试正则表达式\d
:
$words = preg_replace('/\d/', '', $words );
Run Code Online (Sandbox Code Playgroud)
\d
是一个等价物,[0-9]
对应于数字范围从0
到9
.
使用预定义的字符范围也称为字符类:
echo $words= preg_replace('/[[:digit:]]/','', $words);
Run Code Online (Sandbox Code Playgroud)
使用一些正则表达式[0-9]
或\d
:
$words = preg_replace('/\d+/', '', $words );
Run Code Online (Sandbox Code Playgroud)
您可能希望阅读preg_replace()文档,因为它直接显示在那里.
归档时间: |
|
查看次数: |
84589 次 |
最近记录: |