0

私は preg_replace と非常に混同しています。私はこの文字列を持っており、_ の前の数字のみを変更したいと考えています。

$string = 'string/1_491107.jpg';
$newstring = preg_replace('#([0-9]+)_#', '666', $string);

しかし、その後、「string/666_491107.jpg」の代わりに「string/666491107.jpg」を取得します

ありがとう

4

2 に答える 2

3

置換するテキストの一部としてアンダースコアがあります。そのため、置換にも含める必要があります。

$string = 'string/1_491107.jpg';
$newstring = preg_replace('#([0-9]+)_#', '666_', $string);
于 2013-08-19T16:24:30.767 に答える
3

ここで行っているのは$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);

正規表現 101 のデモ

于 2013-08-19T16:24:52.490 に答える