私は preg_replace と非常に混同しています。私はこの文字列を持っており、_ の前の数字のみを変更したいと考えています。
$string = 'string/1_491107.jpg';
$newstring = preg_replace('#([0-9]+)_#', '666', $string);
しかし、その後、「string/666_491107.jpg」の代わりに「string/666491107.jpg」を取得します
ありがとう
私は preg_replace と非常に混同しています。私はこの文字列を持っており、_ の前の数字のみを変更したいと考えています。
$string = 'string/1_491107.jpg';
$newstring = preg_replace('#([0-9]+)_#', '666', $string);
しかし、その後、「string/666_491107.jpg」の代わりに「string/666491107.jpg」を取得します
ありがとう
置換するテキストの一部としてアンダースコアがあります。そのため、置換にも含める必要があります。
$string = 'string/1_491107.jpg';
$newstring = preg_replace('#([0-9]+)_#', '666_', $string);
ここで行っているのは$1
、置換のように括弧内の数字を一致させることです。「カッコ内だけを入れ替えればいい」とは言いません。
次のようにできます。
$string = 'string/1_491107.jpg';
$newstring = preg_replace('#[0-9]+_#', '666_', $string);
または、肯定的な先読みを使用できます(アンダースコアが続く数列にのみ一致しますが、一致にアンダースコアを含めないでください)。
$string = 'string/1_491107.jpg';
$newstring = preg_replace('#[0-9]+(?=_)#', '666', $string);