[php] 문자열에서 모든 선행 0을 제거하는 방법

끈이 있으면

00020300504
00000234892839
000239074

내가 이것을 갖도록 선행 0을 어떻게 제거 할 수 있습니까?

20300504
234892839
239074

위의 숫자는 무작위로 생성되었습니다.



답변

ltrim:

$str = ltrim($str, '0');


답변

(string)((int)"00000234892839")


답변

사람들이 왜 그렇게 단순한 것을 달성하기 위해 그렇게 복잡한 방법을 사용하는지 모르십시오! 그리고 정규식? 와!

가장 쉽고 간단한 방법입니다 ( https://nabtron.com/kiss-code/ 참조 ).

$a = '000000000000001';
$a += 0;

echo $a; // will output 1


답변

실제 제로를 없애지 않는 것을 제외하고 다른 제안과 비슷합니다.

if (ltrim($str, '0') != '') {
    $str = ltrim($str, '0');
} else {
    $str = '0';
}

또는 제안 된대로 (PHP 5.3에서) 속기 삼항 연산자를 사용할 수 있습니다.

$str = ltrim($str, '0') ?: '0'; 


답변

변수에 “+”를 추가하면

예 :

$numString = "0000001123000";
echo +$numString;


답변

정규식은 이미 제안되었지만 올바르게 올바르지 않습니다.

<?php
    $number = '00000004523423400023402340240';
    $withoutLeadingZeroes = preg_replace('/^0+/', '', $number)
    echo $withoutLeadingZeroes;
?>

출력은 다음과 같습니다.

4523423400023402340240

정규식에 대한 배경 : ^문자열의 시작 신호와 +부호는 앞 부호의 부호를 나타내거나 전혀 나타내지 않습니다. 따라서 정규 표현식 ^0+은 문자열 시작 부분의 모든 0과 일치합니다.


답변

나는 preg_replace가 답이라고 생각하지 않습니다. 오래된 스레드이지만 오늘 이것을 찾는 것입니다. ltrim 및 (int) 캐스팅이 승자입니다.

<?php
 $numString = "0000001123000";
 $actualInt = "1123000";

 $fixed_str1 = preg_replace('/000+/','',$numString);
 $fixed_str2 = ltrim($numString, '0');
 $fixed_str3 = (int)$numString;

 echo $numString . " Original";
 echo "<br>";
 echo $fixed_str1 . " Fix1";
 echo "<br>";
 echo $fixed_str2 . " Fix2";
 echo "<br>";
 echo $fixed_str3 . " Fix3";
 echo "<br>";
 echo $actualInt . " Actual integer in string";

 //output

 0000001123000 Origina
 1123 Fix1
 1123000 Fix2
 1123000 Fix3
 1123000 Actual integer in tring