2014-10-29 47 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; 
| 
相关问题