php - php preg_split()。不是正确的模式并将句点转换为逗号?
问题描述
我有个问题。我想缩放一些存储在值中的 CSS 值。(简化)我做了一个函数来扩大它们。
有两件事我做错了。
- 模式,看起来它只分裂一个字符而不是其余的
- 看起来它将找到的句点转换为逗号?
$string = '0.3rem';
$scale = 1.5;
echo calcCssNewValue( $string, $scale );
function calcCssNewValue( $string, $scale ){
$stringArray = preg_split('/[a-zA-Z]*/', $string, 2, PREG_SPLIT_DELIM_CAPTURE);
if ( count( $stringArray ) == 1 ) {
$returnVal = ( $stringArray[0] * $scale) ;
} else {
$returnVal = ( $stringArray[0] * $scale) . $stringArray[1];
}
return $returnVal;
}
result: '0,45em' expected: '0.45rem'
请注意,它缺少r
and 有一个逗号而不是句号。
我哪里做错了?:)
解决方案
运行您的代码时,我没有得到相同的结果,拆分结果对我来说是空字符串和原始值的数组。*
可能是问题,因为它匹配模式的零匹配。
所以不确定逗号的事情,因为我没有看到它。
我会像这样调整你的拆分,似乎可以完成:
$stringArray = preg_split( '/([a-zA-Z]+)/', $string, 2, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY );
这需要:
- 至少匹配一次的模式
- 将它包装起来
()
使分隔符捕获工作,因为它只适用于那个 - 添加没有空滴挥之不去的空项目(模式似乎不计入两个限制)
推荐阅读
- angularjs - Googleapi - gapi 未按预期在 angularjs 中更新 $scope 对象
- c# - 解析字典
>> 使用 LINQ 的对象 - sql - knex 插入多行
- c++ - 使用 C++ 解析 /proc/stat
- c - 不能将字符放入 C 中的字符数组中
- javascript - 在单击另一个按钮之前检查用户单击了哪个按钮
- java - 为什么抛出异常会尝试加载扩展 Exception 的类(尽管它没有执行)而不是常规类
- c# - 如何编辑从数据库填充的datagridview列?C# Windows 窗体
- r - Probit回归:分类变量的边际效应?
- java - 没有 Maven 的黄瓜