我对 preg_replace 很困惑,我有这个字符串,我只想更改 _ 之前的数字
$string = 'string/1_491107.jpg';
$newstring = preg_replace('#([0-9]+)_#', '666', $string);
但后来我得到“string/666491107.jpg”而不是“string/666_491107.jpg”
谢谢
我对 preg_replace 很困惑,我有这个字符串,我只想更改 _ 之前的数字
$string = 'string/1_491107.jpg';
$newstring = preg_replace('#([0-9]+)_#', '666', $string);
但后来我得到“string/666491107.jpg”而不是“string/666_491107.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);