0

我正在尝试在文本的中间添加一些东西,就像那样。

PrivateImg-0123456789_[我想在这里添加一些东西].jpg

而且我不知道我应该使用哪种功能或方式。

我想知道这个函数preg_replace,但我不知道你是否可以让这个函数替换某个位置的特定文本。

4

3 回答 3

1

试试这个,如果你想在扩展之前插入文本:

$string = 'PrivateImg-0123456789.jpg';
$pattern = '/(.+?)(\.[^\.]+)/';
$text_to_insert = '_I wanna add here something';
$replacement = '${1}' . $text_to_insert . '$2';
echo preg_replace($pattern, $replacement, $string);

模式说: (.+?) 匹配和分组除 \n 之外的任何字符 1 次或更多次

然后(.[^.]+) 匹配和分组 . 特点 '。' 和任何字符,除了:'.' 1次或多次

于 2013-08-23T17:35:53.507 回答
1

这段代码不使用 preg_replace 怎么样。可能会多一行/多行代码,但绝对比 preg_replace 解决方案更容易

<?php
$string = 'PrivateImg-0123456789.jpg';
$text_to_insert = '_I wanna add here something';
$pos = strrpos($string,".");
$string = substr($string,0,$pos) . $text_to_insert . substr($string,$pos);
print $string;
?>
于 2013-08-23T18:09:38.150 回答
0

只用str_replace()

$string = "PrivateImg-0123456789.jpg";
echo str_replace(".jpg", "[whateveryouwant].jpg", $string);

如果您必须使用正则表达式:

$string = "PrivateImg-0123456789.jpg";
echo preg_replace("/\.(jpe?g|png|gif)$/si", "[whateveryouwant].$1", $string);

这将执行 jpg、jpeg、png 和 gif,只要它是最后一部分。/foo/bar.gif/thisIsWeird不匹配

于 2013-08-23T17:31:59.027 回答