<?php
$string = "small (150 - 160)";
$string = preg_replace('/[^\d-]/', '', $string); // replace everything not a digit and not a "-" with empty string ('')
list( $min, $max ) = explode('-', $string); // split by "-" and store in $min and $max
var_dump( $min);
var_dump( $max );
5条答案
按热度按时间9fkzdhlc1#
该函数使用
explode
删除“-”并创建一个数组。“-”左边的字符串放在$digits[0]中,右边的放在$digits[1]中。然后使用PHP过滤器从数组字符串中删除非整数字符。注意,我假设你正在处理整数。
filter_var_array
不能处理小数点,但是你可以使用filter_var
和FILTER_SANITIZE_NUMBER_FLOAT
标志来保留小数点。在十进制的例子中,紧挨着上面的任何“.”都将被保留。如果字符串可以包含非数字句点,那么您需要从输出中删除前导“.”,例如。if string = “big.(150 - 160.4)" 则$min将包含'.150'以防止前导周期
$min = trim($min,'.');
。8ftvxx2r2#
下面的
PHP
脚本将解决您的问题:l7mqbcuq3#
输出
mzsu5hc04#
对于
sscanf()
来说,解析一个没有可选字符的可预测格式的字符串是一个很好的任务。比preg_
函数更好的是,如果format参数包含%d
或%f
,那么隔离的nueric子串将被转换为整数或浮点数(分别)。*
符号是一个捕获抑制器--意味着匹配的子字符串不会被分配给变量。代码:(Demo)
输出(int型值):
luaexgnf5#