Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP中的字符串替换_Php_String - Fatal编程技术网

PHP中的字符串替换

PHP中的字符串替换,php,string,Php,String,我有一个名为File\u Test\u name\u 1285931677.xml的字符串File是常用词,1285931677是随机数。 我想删除文件和\u 1285931677.xml,即前缀到第一个\u和后缀从最后一个\u开始。如果您只想替换为字符串,那么方法就是这样做 $str = "File_Test_name_1285931677.xml"; echo str_replace("File_Test_name_1285931677.xml",'Test_name', $str); 如

我有一个名为
File\u Test\u name\u 1285931677.xml的字符串
File
是常用词,
1285931677
是随机数。
我想删除
文件和
\u 1285931677.xml
,即前缀到第一个
\u
和后缀从最后一个
\u
开始。

如果您只想替换为字符串,那么方法就是这样做

$str = "File_Test_name_1285931677.xml";
echo str_replace("File_Test_name_1285931677.xml",'Test_name', $str);
如果要重命名文件,需要使用:


如果您只想替换为字符串,那么这是一种方法

$str = "File_Test_name_1285931677.xml";
echo str_replace("File_Test_name_1285931677.xml",'Test_name', $str);
如果要重命名文件,需要使用:


我会懒散地使用:

$file_name = "File_Test_name_1285931677.xml";
preg_replace("/^File_Test_name_\d+\.xml$/", "Test_name.xml", $filename);
如果您始终希望将其命名为Test_name,则可以这样做。如果测试单元名称更改:

preg_replace("/^File_(.+)_\d+\.xml$/", "$1.xml", $file_name);
编辑(再次):
重新阅读您的更新。您将需要第二个示例。

我会很懒,使用:

$file_name = "File_Test_name_1285931677.xml";
preg_replace("/^File_Test_name_\d+\.xml$/", "Test_name.xml", $filename);
如果您始终希望将其命名为Test_name,则可以这样做。如果测试单元名称更改:

preg_replace("/^File_(.+)_\d+\.xml$/", "$1.xml", $file_name);
编辑(再次): 重新阅读您的更新。您需要第二个示例。

您可以使用,并且:

使用
分解
时,字符串在
处被切割成若干部分,因此结果是一个如下所示的数组:

array('File', 'Test', 'name', '1285931677.xml')
使用
array\u slice
可以抓取从第二个到最后一个的所有内容,例如:

array('Test', 'name')
然后使用
内爆
将其重新组合在一起,结果是:

Test_name

另一种方法是使用和:

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

您可以使用,并且:

$filename = preg_replace('/^File_(.*?)_\d+\.xml$/', '$1', $filename);
使用
分解
时,字符串在
处被切割成若干部分,因此结果是一个如下所示的数组:

array('File', 'Test', 'name', '1285931677.xml')
使用
array\u slice
可以抓取从第二个到最后一个的所有内容,例如:

array('Test', 'name')
然后使用
内爆
将其重新组合在一起,结果是:

Test_name

另一种方法是使用和:


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

您也可以使用substr,但显然,用模式匹配替换str_会更好:

$filename = preg_replace('/^File_(.*?)_\d+\.xml$/', '$1', $filename);
$file = "File_test_name_12345.xml";
$new_file = substr($file,strpos($file,'_')+1,strrpos($file,'_')-strpos($file,'_')).substr($file,strrpos($file,'.'));

您也可以使用substr,但显然用模式匹配替换str_会更好:

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

您应该详细说明一个位添加竞赛,因为您的问题的字面答案是一个微不足道的
str\u replace
是否有任何模式或文件总是这样命名?我想删除前面的第一个字符串和后面的最后一个字符串您应该详细说明一个位添加竞赛,因为您的问题的字面答案是一个普通的
str\u replace
是否有任何模式或文件总是这样命名?我想删除u之前的第一个字符串和之后的最后一个字符串_