我有字符串,名稱爲File_Test_name_1285931677.xml
。 File
是常用詞,1285931677
是一個隨機數。 我想刪除File_
和_1285931677.xml
,即前綴最多爲_
,後綴爲_
。在PHP中替換字符串
1
A
回答
5
您可以explode
,array_slice
和implode
做到這一點:
implode('_', array_slice(explode('_', $str), 1, -1))
隨着explode
的字符串被在_
切成小塊,這樣的結果是這樣一個數組:
array('File', 'Test', 'name', '1285931677.xml')
隨着array_slice
抓住所有從第二個到第二個,例如:
array('Test', 'name')
這是再放回一起使用implode
,導致:
Test_name
substr($str, 5, strrpos($str, '_')-5)
由於File_
有固定的長度,我們可以使用5作爲起始位置。 strrpos($str, '_')
返回最後一次出現_
的位置。當從該位置減去5時,我們得到從第五個字符到最後一次出現位置的距離,作爲子串的長度。
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
我會偷懶,使用:
$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);
EDIT(再次): 重讀您的更新。你會想要第二個例子。
1
$filename = preg_replace('/^File_(.*?)_\d+\.xml$/', '$1', $filename);
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,'.'));
+0
而人們說正則表達式是不可讀的:) – 2010-10-01 13:33:27
相關問題
- 1. 替換字符串在PHP
- 2. 如何在PHP中替換字符串?
- 3. 在PHP中替換多個字符串
- 4. 在PHP中替換字符串
- 5. 字符串替換PHP
- 6. PHP替換字符串
- 7. PHP:替換字符串
- 8. PHP RegEx字符串替換
- 9. PHP:替換字符串
- 10. PHP字符串替換?
- 11. 替換字符串用PHP
- 12. 字符串替換(PHP)
- 13. PHP替換字符串
- 14. PHP替換字符串
- 15. PHP替換「字符串
- 16. PHP字符串替換「&」
- 17. PHP - 字符串替換
- 18. 替換字符串PHP
- 19. php - 在字符串中搜索字符串並替換
- 20. 多個字符串替換在相同的字符串在PHP
- 21. 替換數組中的字符串php
- 22. PHP中的高效字符串替換
- 23. 替換JavaScript和PHP中的字符串
- 24. 替換字符串中的值 - PHP
- 25. PHP替換字符串中的文本
- 26. PHP替換字符串中的鍵
- 27. preg替換PHP中的字符串
- 28. 替換PHP中的特殊字符串
- 29. 如何替換php中的字符串
- 30. php:替換範圍中的字符串
你應該詳細一點加入比賽,因爲字面回答你的問題是一個平凡的'str_replace' – 2010-10-01 12:57:34
是否有任何圖案或文件總是像這樣命名? – Shikiryu 2010-10-01 12:59:30
我想刪除第一個字符串之前_和最後一個字符串after_ – Warrior 2010-10-01 13:07:00