[英]Remove leading zeros from a negative value
我正在使用ltrim()
函數從已修剪的字符串中刪除前導零,但是不幸的是,負數條目也是有效的,因此我的解決方案對此無效。
例如 -
$size1 = "0010xp";
$size2 = "-0010px";
var_dump(ltrim($size1, 0));
var_dump(ltrim($size2, 0));
產生輸出-
string(4)“ 10px” //正確
string(7)“ -0010px” //錯誤
如何在保留-
符號的同時從負值中刪除前導零?
ltrim確實包含多個字符:
$string = ltrim($string, '-0');
這將從字符串開頭刪除所有零和負號。
編輯:如果要保留減號,請嘗試如下操作:
$string = ($string[0] == '-') ? '-'.ltrim(substr($string, 1), '0') : ltrim($string, '0');
preg_replace也是一個選項,但是通常比簡單的字符串操作要慢得多。
您為什么不兩次運行ltrim?
$string = "-0010xp";
$string = ltrim($string, '-');
$string = ltrim($string, 0);
echo $string;
ltrim可以使用任何字符。 請參閱文檔。 http://php.net/manual/en/function.ltrim.php
我要保留“-”,然后查看史蒂夫B的答案:
$string = "-00010px";
$string = preg_replace('/^(-)?(0+)/', '$1' , $string);
echo $string;
您可以定義一個函數微調器以檢查負號,將其刪除,然后在刪除零后將其重新添加。
然后,您可以使用任何要從中去除零的字符串來調用它。
function trimmer($str) {
$is_neg = false;
if (substr($str, 0, 1) == '-') {
$is_neg = true;
$str = ltrim($str, '-');
}
$str = ltrim($str, 0);
if ($is_neg) {
$str = '-' . $str;
}
return $str;
}
echo trimmer("0010px");
echo trimmer("-0010px");
修剪零后,這將恢復“-”號,我認為其他解決方案不會。
我想到的一種快速解決方案是匹配一個正則表達式並使用preg_replace:
var_dump(preg_replace('/^(-)?(0+)/', '$1' , "-00010px"));
var_dump(preg_replace('/^(-)?(0+)/', '$1' , "00010px"));
$size1 = "0010xp";
$size2 = "-0010px";
var_dump(ltrim($size1, 0));
var_dump(ltrim(abs($size2), 0));
另一種選擇是floatval()
$val1 = '0010px';
$val2 = '-0010px';
echo floatval($val1) . 'px';
echo '<br>';
echo floatval($val2) . 'px';
輸出:
10px
-10px
@Psaniko的答案可能更有效。 並且您需要添加“ px”,如果不僅是后綴,那將是一個問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.