文字列の最初の文字だけを置き換えようとしていますが、機能していません。文字列のすべての「0」が置き換えられます。コードは次のとおりです。
$mes2 = str_replace('0', '', $mes[0]);
最初の文字が0の場合にのみ置き換えたい、例:
07は7になります
いつも交換したくない、例:
11が1になります。
私もこの方法を試しましたが、2番目の文字が0の場合、10が1になるように置き換えられるため、希望どおりに機能しませんでした。
$mes2 = preg_replace('/0/', '', $mes, 1);
OK、あなたの質問の改良に基づいて、あなたがおそらく欲しいのはltrim
です。
$out = ltrim($in, "0");
これにより、$in
からすべての先行ゼロが削除されます。他の場所からゼロを削除することはなく、ゼロ以外のものを削除することもありません。注意してください; 「000」を指定すると、「0」ではなく「」が返されます。
$in
が常に数値である限り(または、そうでない場合は0になるようにしたい場合)、代わりに型キャストを使用できます。
$out = (int) $in;
...等。
さて、万が一、最初の0のみを置き換えたいの場合、たとえば「007」が「07」になると、質問で言及された最新の試みはほぼ完了します。文字列の先頭にのみ一致するようにするには、「キャレット」文字を追加する必要があります。
$out = preg_replace('/^0/', '', $in);
$str = '1ere is the solution';
echo preg_replace('/1/', 'h', $str, 1); // outputs 'here is the solution'
substr
を使用します:
$mes2 = substr($mes, 1);
これはremove最初の文字になります。これはあなたが達成しようとしているように見えます。それを何かと交換したい場合は、これを使用してください:
$mes2 = $new_char . substr($mes, 1);
質問を読み間違えた可能性があります。$mes[0]
が元の文字列の場合は、上記の$mes[0]
の代わりに$mes
を使用してください。
PHPの文字列は、配列と同じようにアクセスできます
_<?php
$var = "test";
$var[0] = "1";
var_dump($var);
?>
_
string(4) "1est"
を出力します
$mes[0] = '';
を使用するか、$mes[0] = $mes[0] == '<replaced character>' ? '' : $mes[0];
のような特定の置換が必要な場合は簡単に使用できます。
あなたはこのようにそれをすることができます:
$mes2 = "07 test subject";
if($mes2['0']=='0') { $mes2['0']=''; }
echo $mes2;
これは出力します:
7 test subject
私の長いアプローチ:
$first_letter = substr($mes[0], 0, 1);
$rest = substr($mes[0], 1);
$mes2 = str_replace('0', '', $first_letter);
$result = $mes2.$rest;
またはそれより短い:
$result = str_replace('0', '', substr($mes[0], 0, 1)).substr($mes[0], 1);
これは私がそれをしたであろう方法です:
$mes2 = substr_replace($mes[0],'',strpos($mes[0], '0'),1);