PHP中的字符串替换

时间:2010-10-01 12:55:32

标签: php string

我有一个名为File_Test_name_1285931677.xml的字符串。 File是常用词,1285931677是随机数。 我想删除File__1285931677.xml,即前缀为_的前缀和后缀_的后缀。

5 个答案:

答案 0 :(得分:5)

您可以使用explodearray_sliceimplode执行此操作:

implode('_', array_slice(explode('_', $str), 1, -1))

使用explode,字符串会被切割成_的部分,以便结果是这样的数组:

array('File', 'Test', 'name', '1285931677.xml')

使用array_slice抓住从第二个到第二个的所有内容,例如:

array('Test', 'name')

然后使用implode将其重新组合在一起,生成:

Test_name

另一种方法是使用strrpossubstr

substr($str, 5, strrpos($str, '_')-5)

由于File_具有固定长度,我们可以使用5作为起始位置。 strrpos($str, '_')返回上次出现_的位置。当从该位置减去5时,我们得到从第五个字符到最后一个出现位置的距离,我们将其用作子串的长度。

答案 1 :(得分:3)

我会懒惰并使用:

$file_name = "File_Test_name_1285931677.xml";
preg_replace("/^File_Test_name_\d+\.xml$/", "Test_name.xml", $filename);

如果你总是想把它称为Test_name。如果Test_name更改:

preg_replace("/^File_(.+)_\d+\.xml$/", "$1.xml", $file_name);

编辑(再次): 重新阅读您的更新。你会想要第二个例子。

答案 2 :(得分:1)

如果您只想替换为字符串replace_string,那就是

$str = "File_Test_name_1285931677.xml";
echo str_replace("File_Test_name_1285931677.xml",'Test_name', $str);

如果要重命名文件,则需要使用rename

rename("/directors_of_file/File_Test_name_1285931677.xml", "Test_name");

答案 3 :(得分:1)

$filename = preg_replace('/^File_(.*?)_\d+\.xml$/', '$1', $filename);

答案 4 :(得分:0)

您也可以使用substr,但显然str_replace与模式匹配会更好:

$file = "File_test_name_12345.xml";
$new_file = substr($file,strpos($file,'_')+1,strrpos($file,'_')-strpos($file,'_')).substr($file,strrpos($file,'.'));