2014-10-29 16 views
0

所以我有一大堆的文件名如PHP從字符串中得到具體的詞是否存在

$filename = "somefile-Page-1.pdf" 
    $filename = "somefile-Page-2.pdf" 

什麼即時試圖做的就是在文件名

so that $pageNumber will resurn Page-1 

頁碼四試過follwoing:

$pageNum = substr($filename, 0, strpos($filename, 'Page')); 

但最終返回

somefile- 
+0

爲什麼你從0開始的文件名開始,你應該開始的子字符串。 'substr($ filename,strpos($ filename,'Page'),-4);' – 2014-10-29 22:55:27

回答

2

嘗試這種情況:

$filename = 'somefile-Page-2.pdf'; 
preg_match('/(Page\-(\d+))\.pdf/i', $filename, $matches); 

和匹配陣列將具有格式:

陣列(大小= 3)

0 =>字符串「頁-2- .pdf'(長度= 10)

1 => string'Page-2'(length = 6)

2 =>字符串 '2'(長度= 1)

+0

我喜歡它,我真的應該學習如何使用正則表達式。 +1 – 2014-10-29 22:59:49

+0

謝謝你的工作 – Yeak 2014-10-29 23:12:09

0

在你的例子中,你的子串從0開始並以「Page」位置結束。嘗試

$pageNum = substr($filename, strpos($filename, 'Page'), -4); 

從「頁」直到結束(無週期和延伸,因此-4)獲取部分。

0
$filename = "somefile-Page-2.pdf"; 

public function getPageNumber($filename) { 
    // Explodes on "-" 
    $explodedFilename = explode('-', $filename); 

    // Find the key to the Page word 
    $keyToPage = array_search("Page", $explodedFilename); 

    // If the key is found and the next array item exists, which contains the number, go and return it 
    if($keyToPage && isset($explodedFilename[$keyToPage++])) { 
     return $explodedFilename[$keyToPage] . "-" . $explodedFilename[$keyToPage++]; 
    } 

    return null; 
| 
相關問題