preg_match获取123-和.txt之间的任何字符的文件?

时间:2012-12-07 18:56:51

标签: php regex preg-match

我需要使用preg_match来获取符合特定条件的文件。例如,我想找到一个名为“123-stack-overflow.txt”的文件。在123-之后和.txt之前可以有任何字符。

如何对其进行修改以使其有效?

preg_match("/^$ID-(.+).txt/" , $name, $file);

3 个答案:

答案 0 :(得分:2)

Regexp ^123-.+\.txt$

^       # Match start of string
123-    # Match the literal string 123-
(.+)    # Match anything after (captured)
\.txt   # Match the literal string .txt 
$       # Match end of string

php:

$str="123-stack-overflow.txt";

preg_match('/^123-(.+)\.txt$/',$str,$match);
echo $match[0];
echo $match[1];

>>> 123-stack-overflow.txt
>>> stack-overflow

答案 1 :(得分:2)

//^ beginning of line<br/>
//preg_quote($ID, '/') Properly escaped id, in case it has control characters <br/>
//\\- escaped dash<br/>
//(.+) captured file name w/out extension <br/>
//\.txt extension<br/>
//$ end of line

    preg_match("/^".preg_quote($ID, '/')."\\-(.+)\\.txt$/" , $name, $file);

答案 2 :(得分:0)

你必须逃脱。字符

preg_match("/^$ID-(.+).txt/" , $name, $file);

应该是

preg_match("/^$ID-(.+)\.txt^/U" , $name, $file);

如果你想匹配每个号码而不是$ ID,你可以使用

preg_match("/^[0-9]+-(.+)\.txt^/U" , $name, $file);