从负值中删除前导零

时间:2015-04-30 08:00:34

标签: php trim

我正在使用http://examples.javacodegeeks.com/java-basics/exceptions/java-lang-nullpointerexception-how-to-handle-null-pointer-exception/函数从已经修剪的字符串中删除前导零,但不幸的是,负数条目也是有效的,因此我的解决方案不起作用。

例如 -

ltrim()

生成输出 -

  

string(4)“10px”//正确
  string(7)“ - 0010px”//不正确

如何在保留$size1 = "0010xp"; $size2 = "-0010px"; var_dump(ltrim($size1, 0)); var_dump(ltrim($size2, 0)); 符号的同时从负值中删除前导零?

6 个答案:

答案 0 :(得分:3)

ltrim确实需要多个字符:

$string = ltrim($string, '-0');

这将从字符串的开头删除任何零和减号。

编辑: 如果你想保留减号,试试这样的事情:

$string = ($string[0] == '-') ? '-'.ltrim(substr($string, 1), '0') : ltrim($string, '0');

preg_replace也是一个选项,但它通常比简单的字符串操作慢得多。

答案 1 :(得分:1)

为什么不运行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;

答案 2 :(得分:1)

您可以定义一个功能修剪器以检查减号,将其删除然后在删除零后将其添加回去。

然后,您可以使用要从中删除零的任何字符串调用此方法。

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");

这将在修剪零后恢复' - '符号,我不认为其他解决方案会这样做。

答案 3 :(得分:1)

想到的一个快速解决方案是匹配正则表达式并使用preg_replace:

var_dump(preg_replace('/^(-)?(0+)/', '$1' , "-00010px"));
var_dump(preg_replace('/^(-)?(0+)/', '$1' , "00010px"));

答案 4 :(得分:0)

$size1 = "0010xp";
$size2 = "-0010px";
var_dump(ltrim($size1, 0));
var_dump(ltrim(abs($size2), 0));

答案 5 :(得分:0)

另一个选项是floatval()

$val1 = '0010px';
$val2 = '-0010px';

echo floatval($val1) . 'px';
echo '<br>';
echo floatval($val2) . 'px';

输出:

10px
-10px

@Psaniko答案可能会更有效率。而且你需要添加&#39; px&#39;如果它不仅是可能的后缀,这将是一个问题。