Fre*_*die 1 php regex string-parsing
我有字符串:
17s 283ms
48s 968ms
Run Code Online (Sandbox Code Playgroud)
字符串值永远不会相同,我想从中提取"第二"值.在这种情况下,17和48.
我对正则表达式不太了解,所以我做的解决方法是:
$str = "17s 283ms";
$split_str = explode(' ', $str);
foreach($split_str as $val){
if(strpos($val, 's') !== false) $sec = intval($val);
}
Run Code Online (Sandbox Code Playgroud)
问题是,字符''存在于split_str [0]和split_str [1]中,因此我的$ sec变量保持获得283而不是17.
再一次,我对正则表达式不是很了解,我非常确定正则表达式是这种情况下的方法.请协助.谢谢.
你甚至不需要使用正则表达式.
$seconds = substr($str, 0, strspn($str, '1234567890'));
Run Code Online (Sandbox Code Playgroud)
上述解决方案将从字符串的开头提取所有数字.如果第一个非数字字符是"s",空格或其他任何内容,则无关紧要.
你甚至可以投射$str到int:
$seconds = (int)$str; // equivalent: intval($str)
Run Code Online (Sandbox Code Playgroud)
对于这样一个简单的任务,正则表达式肯定是过度的.不要用炸药在墙上钻孔.