回答
如果文件名稱都以數字開頭就沒有必要使用正則表達式,試試這個:
foreach (glob('/path/to/dir/{0,1,2,3,4,5,6,7,8,9}*', GLOB_BRACE) as $file)
{
echo $file . ' = ' . intval(basename($file)) . "<br />\n";
}
這更新glob模式將只匹配以數字啓動文件名,爲你請求。
@ ghostdog74:你說得對。
foreach (glob('/path/to/dir/{0,1,2,3,4,5,6,7,8,9}*', GLOB_BRACE) as $file)
{
echo $file . ' = ' . filter_var(basename($file), FILTER_SANITIZE_NUMBER_INT) . "<br />\n";
}
該期間的第一個explode,然後展開下劃線,然後你的號碼是返回列表中的第一個元素。
<?php
$str1 = "1234.jpg";
$str2 = "1234_crob.jpg";
$pieces = explode("_",current(explode(".",$str1)));
echo $pieces[0]; // prints 1234
$pieces = explode("_",current(explode(".",$str2)));
echo $pieces[0]; // prints 1234
?>
是的,我知道這是不是正則表達式,但是這是太簡單了,使用正則表達式的任務。
編輯:修改後的代碼爲您新編輯的格式化示例工作。編輯:修改爲適合在一行代碼乾淨。
奧赫...正則表達式會更簡單! =)另外,一些文件名可能根本沒有數字(至少這是提問者對我的回答所作的評論)。 – 2010-01-16 20:35:25
@Alix Axel:呵呵,也許這是真的。如果可能的話,我總是喜歡使用內置函數。我猜可以使用is_numeric()來測試$ pieces [0]是否是一個數字。但是我明白你在說什麼,現在這個代碼看起來好像比正則表達式更復雜。 – Roman 2010-01-16 20:43:01
假設你只有通過在文件名(而不是文件路徑),下面應該檢索所有連續編號0-9:
function getDigits($fn) {
$arr = array();
preg_match('/[0-9]+/', $fn, $arr);
return $arr;
}
用法示例
var_dump(getDigits('hey_12345.gif'));
/*
output:
array(1) {
[0]=>
string(5) "12345"
}
*/
var_dump(getDigits('123487_dude.jpg'));
/*
output:
array(1) {
[0]=>
string(6) "123487"
}
*/
試試這個。如果你有像045_test.jpg數字,使用intval會給你45而不是045
$path="/path/[0-9]*";
foreach (glob($path) as $files){
$base=basename ($files);
$s = preg_split("/[^0-9]/",$base,2);
echo $s[0]."\n";
}
- 1. 獲取數字的正則表達式
- 2. 從正則表達式獲取數據
- 3. 正則表達式 - 獲取文件名?
- 4. 從字符串中獲取數字與正則表達式
- 5. 正則表達式從一個字符串中獲取數字
- 6. 正則表達式從文本文件中獲取url
- 7. 從正則表達式的文本中獲取字符串
- 8. 正則表達式從字符串中獲取數據
- 9. 正則表達式從字符串中獲取數組編號
- 10. PHP的正則表達式來從URL中獲取文件名
- 11. 從文件中獲取正則表達式
- 12. 正則表達式從URL中獲取文件夾名稱
- 13. PHP正則表達式 - 從字符串獲取數字
- 14. 使用正則表達式從字符串中取回數字
- 15. 使用正則表達式從字符串中提取數字
- 16. 獲取正則表達式
- 17. 獲取正則表達式
- 18. 用正則表達式從字符串中獲取值
- 19. 使用正則表達式從字符串中獲取子
- 20. 如何用正則表達式從HTML中獲取字符串?
- 21. 正則表達式 - 獲取字符串
- 22. 用正則表達式從文本文件中讀取
- 23. Python - 從.txt獲取正則表達式
- 24. 正則表達式來獲取值從[]
- 25. 正則表達式獲取從HREF
- 26. 使用正則表達式從文章中獲取信息
- 27. 正則表達式:從字符串獲取子文本
- 28. 從字符串獲取文本與正則表達式
- 29. C#正則表達式從數字中提取某些數字
- 30. 正則表達式獲取文本
注意:intval會將「045_image.jpg」中的「045」變成45. – ghostdog74 2010-01-18 00:39:57
@ ghostdog74:我錯過了那個,現在修復了。 – 2010-01-18 01:24:13