嗨,我有一个像这样的字符串:
v8gn5.8gnr4nggb58gng.g95h58g.n48fn49t.t8t8t57
我想去掉所有的字符,只保留数字(和点号)。
有什么方法可以做到这一点吗?是否有预先构建的函数可以使用?
谢谢
$str = preg_replace('/[^0-9.]+/', '', $str);
将不包含数字或小数点的子字符串替换为空。
这是它的工作原理:
preg_replace
是PHP函数,用于搜索一个字符串并将其替换为给定的替换字符串。preg_replace
中的第一个参数是要搜索的正则表达式模式。在这种情况下,模式是'/[^0-9.]+/'
,它匹配任何不是数字或小数点的字符。方括号内的^字符表示“非”,因此[^0-9.]
表示任何不是数字或小数点的字符。加号表示前一个字符或字符组的一个或多个出现,即在本例中为 [^0-9.]。preg_replace
中的第二个参数是替换字符串。在这种情况下,替换字符串是一个空字符串''。因此,与第一个参数中的模式相匹配的任何字符都将被替换为一个空字符串。preg_replace
中的第三个参数是要搜索和修改的输入字符串。在这种情况下,输入字符串由变量$str
表示。因此,这行代码将删除输入字符串$str中不是数字或小数点的所有字符,并返回只包含数字和小数点的修改后的字符串。
preg_replace('/[^0-9.]/', '', $string);
$input = 'some str1ng 234';
$newString = preg_replace("/[^0-9.]/", '', $input);
$str = preg_replace('/\D/', '', $str);
\D = 所有非数字字符。
str_replace()
比使用preg_replace()
更快(多得多)。str_replace()
。str_replace()
,除非您想硬编码所有不是数字的字符。 - Matteo Riva