我需要使用 preg_match 来获取匹配某个条件的文件。例如,我想查找一个名为“123-stack-overflow.txt”的文件。在 123- 之后和 .txt 之前可以有任何字符。
如何修改它以使其正常工作?
preg_match("/^$ID-(.+).txt/" , $name, $file);
我需要使用 preg_match 来获取匹配某个条件的文件。例如,我想查找一个名为“123-stack-overflow.txt”的文件。在 123- 之后和 .txt 之前可以有任何字符。
如何修改它以使其正常工作?
preg_match("/^$ID-(.+).txt/" , $name, $file);
正则表达式^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
//^ 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);
你必须逃跑。宪章
preg_match("/^$ID-(.+).txt/" , $name, $file);
应该
preg_match("/^$ID-(.+)\.txt^/U" , $name, $file);
如果你想匹配每个数字而不是 $ID 你可以使用
preg_match("/^[0-9]+-(.+)\.txt^/U" , $name, $file);