preg_replace查找并替换为附加值

时间:2013-12-05 16:41:35

标签: php preg-replace

$string = 'img-file_name.jpg';
$pattern = '\.\w+';
$replacement = '_small$1';
echo preg_replace($pattern, $replacement, $string);

我想将_small附加到文件的末尾,就在之前。扩展

我希望最终结果为:img-file_name_small.jpg

  

接收错误:preg_replace():分隔符不能是字母数字或反斜杠

(它指的是最后一行,echo preg_replace ...

2 个答案:

答案 0 :(得分:1)

没有正则表达式:

$string = 'img-file_name.jpg';
$replacement = '_small';
$p = pathinfo($string);
echo $p['filename'].$replacement.$p['extension'];

答案 1 :(得分:0)

您的模式缺少正确的delimiter - 正如错误消息所示。

$pattern = '/\.\w+/';有效,例如$pattern = '#\.\w+#';

但要使此模式生效,您需要将扩展​​名定义为一个组(此时您将错过结果中的扩展名)。

$pattern = '#(\.\w+)#';

只有现在您才能使用$1引用回模式