假设我有这些文本'x34','150px','650dpi','e3r4t5'...我怎么才能得到数字?我的意思是我想要34,150,650,345而没有任何其他角色.我的意思是将此字符串的数字转换为一个变量.
Tim*_*per 24
$str = "e3r4t5";
$str_numbers_only = preg_replace("/[^\d]/", "", $str);
// $number = (int) $str;
Run Code Online (Sandbox Code Playgroud)
Abh*_*ani 17
很抱歉加入潮流,而不是使用Regex,我建议您使用PHP的内置功能,这可能比Regex更快.
例如,从给定的字符串中获取数字
<?php
$a = '!a-b.c3@j+dk9.0$3e8`~]\]2';
$number = str_replace(['+', '-'], '', filter_var($a, FILTER_SANITIZE_NUMBER_INT));
// Output is 390382
?>
Run Code Online (Sandbox Code Playgroud)
为了坚持更严格的问题标准,我已经更新了我的答案,以便给出更好的结果.
我添加了str_replace,因为它们是PHP的异常规则的一部分,因此FILTER_SANITIZE_NUMBER_FLOAT或者INT不会从字符串中删除+和标记-字符.
虽然它使滤波器位长,但它现在失败或给你意想不到的结果的机会较少,这将比REGEX更快.
编辑:
1:意识到FILTER_SANITIZE_NUMBER_FLOAT,PHP不会选择性地 剥离这些字符.,eE,因此只需使用纯数字FILTER_SANITIZE_NUMBER_INT
2:如果你的PHP版本小于5.4,那么请使用array('+', '-')而不是短数组语法['+', '-'].
Gum*_*mbo 12
您可以使用正则表达式删除任何不是数字的字符:
preg_replace('/\D/', '', $str)
Run Code Online (Sandbox Code Playgroud)
这里的模式\D描述了任何不是数字的字符(补充\d).
如果您使用的是PHP 5.2.X,5.3.x,5.4,请使用PHP FILTER函数.强烈推荐
$mixed_input = "e3r4t5";
$only_numbers = filter_var($mixed_input, FILTER_SANITIZE_NUMBER_INT);
Run Code Online (Sandbox Code Playgroud)
请仔细阅读此链接以了解更多信息