我有以下几套:
public static function airingTimeToUserTimezone($airing_day, $airing_hour, $airing_minutes)
{
$AirDateTime = new DateTime("2016-02-$airing_day $airing_hour:$airing_minutes:00");
$AirDateTime->setTimezone(self::$user->DateTimeZone);
$toret = array();
list (
$toret['day'],
$toret['dayname'],
$toret['hour'],
$toret['minutes'],
$toret['timestring']
) = explode("/", $AirDateTime->format("N/l/G/i/g:i A"));
return $toret;
}
我想让我的词法分子接受如下实际数字: 0.002或0.004e-10或.01
问题是,我希望它忽略前导零,但保留数字的其余部分,例如:当我给000.0002时我想保留0.0002当我给0.2e-0100我想要保持0.2e-100
所以我在想像atof函数,但我不知道该怎么做。
有什么想法吗?
提前致谢
答案 0 :(得分:1)
lex
将返回您的模式匹配为一个字符串的完整标记。您无法更改 。以相当复杂为代价,您可以使用开始条件来匹配前导零(可能是唯一的数字),并收集碎片的标记,例如,
0.2e-0100
作为
0.2e-
0
100
并将第一个/最后一个令牌粘合在一起,但你会发现很多更容易开发自己的字符串函数,过滤掉不需要的前导零。