0

我想在文本文件名中查找(例如 name.txt)。你能建议我在 preg_match_all() 中使用的正则表达式吗?我创建了一些正则表达式:

preg_match_all("/^[a-zA-Z0-9_.]+[.][a-zA-Z0-9]{1,3}$/", $string, $w);

但是,总是得到一个空的结果。

4

1 回答 1

0

只需在您的 reg 表达式中删除这些符号(^ 和 $)

这对我有用:

preg_match_all("![a-zA-Z0-9_.]+[.][a-zA-Z0-9]{1,3}!", $string, $w);

^ - 匹配字符串的开头。

$ - 匹配字符串的结尾。

如果你的文件被放置在文本中你可以省略这个符号。

我会使用以下 reg 表达式,因为你写的那个找到扩展名由 1 到 3 个字母组成的文件,但通常扩展名包含 3 个字母(.doc,txt)

这是工作示例:

$string=" some text name.txt  some text hello.doc";
preg_match_all("![a-zA-Z0-9_.]+[.][a-zA-Z0-9]{3}!", $string, $w);
print_r($w);

输出:

Array ( [0] => Array ( [0] => name.txt ) ) 
于 2012-07-05T19:04:08.323 回答