我需要能够提取完整文件路径和名称的片段以插入数据库。为此,我在 PHP 中使用 preg_match。我还从模式中为每个段命名,以便匹配数组是关联的。这是一个例子:
$subject = 'c:/files/uk/kent/ashford/12345_Joe_Blogs_20120202120000.pdf';
$pattern = '/[\/\\\\](?<country>.*)[\/\\\\](?<county>.*)[\/\\\\](?<town>.*)[\/\\\\](?<id>.*)_(?<first_name>.*)_(?<last_name>.*)_(?<datetime>.*)\.(?<file_extension>pdf)/';
preg_match($pattern, $subject, $matches);
foreach($matches as $key => $match)
{
if(is_numeric($key))
unset($matches[$key]);
}
print_r($matches);
这创造了:
Array
(
[country] => files/uk
[county] => kent
[town] => ashford
[id] => 12345
[first_name] => Joe
[last_name] => Blogs
[datetime] => 20120202120000
[file_extension] => pdf
)
我的问题是该国家/地区包括我想要的文件夹之前的所有文件夹。我只想要“英国”部分而不是“文件/英国”。所以我需要知道如何匹配除“/”或“\”之外的所有内容。'c:/files' 可以是配置中预先设置的任何内容,因此我不想在模式中包含该变量或任何其他 PHP 变量。
我已经在 Google 等中查找过这个,但我似乎无法找到我正在寻找的答案。
提前感谢您的帮助。