데이터베이스에 삽입 할 전체 파일 경로와 이름의 세그먼트를 추출 할 수 있어야합니다. 이렇게하려면 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에서 이와 비슷하게 보았지만 원하는 답변을 찾을 수없는 것 같습니다.
미리 도움을 청하십시오.