vardump は文字列
string(14) " 00107042012" を出力します。
取得した文字列の長さは明らかに 11 です。
返信ディスカッション (解決策)
<?php$str = '00107042012';$str1 = '00107042012';var_dump($str);var_dump($str1);?>
2 つの出力を見てください。
3 つの特殊文字の ASCII コード 239,187,191 は、BOM ヘッダー EF BB BF
<?phpecho '<meta http-equiv="content-type" content="text/html; charset=utf-8">';$str = '00107042012';$str1 = '00107042012';echo 'str:<br>';for($i=0,$len=strlen($str);$i<$len;$i++){ echo ord(substr($str,$i,1)).'<br>';}echo '<br>str1:<br>';for($i=0,$len=strlen($str1);$i<$len;$i++){ echo ord(substr($str1,$i,1)).'<br>';}?>
str:2391871914848494855485250484950str1:4848494855485250484950
<?php$str = '00107042012';$str = substr($str, 3);var_dump($str);?>
<?php$str = '00107042012';$str1 = '00107042012';var_dump($str);var_dump($str1);?>
2 つの出力を見ればわかります。
3 つの特殊文字 239,187,191 の ASCII コードは、BOM ヘッダー EF BB BF
<?phpecho '<meta http-equiv="content-type" content="text/html; charset=utf-8">';$str = '00107042012';$str1 = '00107042012';echo 'str:<br>';for($i=0,$len=strlen($str);$i<$len;$i++){ echo ord(substr($str,$i,1)).'<br>';}echo '<br>str1:<br>';for($i=0,$len=strlen($str1);$i<$len;$i++){ echo ord(substr($str1,$i,1)).'<br>';}?>
str:2391871914848494855485250484950str1:4848494855485250484950
<?php$str = '00107042012';$str = substr($str, 3);var_dump($str);?>