完全なファイル パスと名前のセグメントを抽出して、データベースに挿入できるようにする必要があります。これを行うには、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
)
私の問題は、国には、必要なフォルダーの前にあるすべてのフォルダーが含まれていることです。「files/uk」ではなく「uk」の部分だけが必要です。そのため、「/」または「\」以外のすべてを一致させる方法を知る必要があります。「c:/files」は、構成で事前に設定されているものであれば何でもかまいません。そのため、パターンにその変数やその他の PHP 変数を含めたくありません。
これをGoogleなどで調べましたが、探している答えが見つからないようです。
助けてくれてありがとう。