2016-09-12 62 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.

相关问题