2016-09-12 25 views
0

我嘗試使用如此多的示例聯機以獲取_.之間的數字。無論出於何種原因,它都會輸出空字符串無法提取兩個字符之間的值

字符串:

/chat_3.txt 

我希望能夠提取它的數量,這是3在上述string.How做呢?

我嘗試如下,但它給空輸出:

$s = '/chat_3.txt'; 
$matches = array(); 
$t = preg_match('/_(.*?)\./s', $s, $matches); 

然後,我寫的輸出到像這樣的Joomla文件:

$file = __DIR__ . '/file.txt'; 
JFile::write($file, $matches[1]); 

編輯

實際上,我通過數組而不是字符串。

+0

@anubhava我得到錯誤:警告:的preg_match()預計參數2爲字符串, 112233

+0

@anubhava給定陣列,我發現了修復,我通過陣列代替串的.. – 112233

+1

您能否澄清一下您的問題是否已解決?如果您需要從數組中的字符串中獲取* numeric *值,我想您可以使用['preg_filter('/.*_(\ d +)\ .. */s','$ 1',$ s)' ](https://ideone.com/le6LFx) –

回答

1

所以,真正的問題是,

I passed array instead of string

如果你需要從. + digits + .最後一次出現提取數字,你可以很容易地實現與一個preg_filter功能:

$s = array('/chat_3.txt', '/chat_old.txt', '/chat_15.txt'); 
$matches = array(); 
$t = preg_filter('/.*_(\d+)\..*/s', '$1',$s); 
print_r($t); 

PHP demo

preg_filter將重新只找到匹配的那些值。被替換的值將被返回。因此,.*_(\d+)\..*將盡可能多地匹配任何0+字符,直到最後_ + 1個或更多數字(捕獲到組1中)+ . +字符串末尾的任何零個或多個字符,並將替換所有這些在組中找到的數字1.

相關問題