データベースに挿入する完全なファイルパスと名前のセグメントを抽出できる必要があります。これを行うために私はPHPでpreg_matchを使用しています。私はまた、マッチの配列が連想的なものになるように、パターン内から各セグメントに名前を与えています。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
)
私の問題は、その国である私が欲しいものを、先行するすべてのフォルダが含まれてここでの例です。私は 'uk'の部分だけを必要とし、 'files/uk'は望んでいない。だから私は '/'または '\'以外のすべてのものにマッチする方法を知る必要があります。 'c:/ files'は構成内にあらかじめ設定されているものなので、パターンにその変数やその他のPHP変数を含めたくない場合があります。
Googleなどでこれを調べましたが、私が探している回答が見つからないようです。
ご協力いただきありがとうございます。