Tôi đang cố gắng liệt kê các tệp trong thư mục (đệ quy hoặc không) với PHP trong đó tên tệp khớp với mẫu nhất định. Tôi chưa bao giờ quá tuyệt vời với regex nên bất kỳ sự trợ giúp nào bạn có thể cung cấp sẽ là tuyệt vời. Tôi có thể tìm kiếm một tấm séc đen trên tên tập tin trở lại, nhưng tôi nghĩ đó không phải là một ý tưởng tuyệt vời như vậy :)Tìm tất cả các tệp trong thư mục có chuỗi hoặc mẫu trong tên tệp bằng PHP
Cập nhật + Giải pháp cuối cùng: 2011/01/18 @ 20:06
Tôi tìm thấy một cách khác để làm những gì tôi đang tìm kiếm một khi tôi hiểu regex nhiều hơn một chút. Tôi đã hoàn toàn thất vọng về việc tôi ở đâu với regex, bây giờ tôi nhận được một chút nhờ một người bạn kéo tôi sang một bên để giải thích một số điều này theo những thuật ngữ đơn giản hơn so với những gì tôi tìm thấy trong hướng dẫn trực tuyến.
Giải pháp này về cơ bản kiểm tra một (các) hình ảnh cụ thể có tiền tố hàng đầu là "tiền tố" hoặc "tiền tố", đồng thời xác minh rằng đó là hình ảnh của một loại nhất định (jpg, jpeg, png) và khớp với bất kỳ các định dạng sau.
Tùy thuộc vào slug bạn đã chuyển từ Wordpress (nơi tôi đang sử dụng), nó sẽ khớp với biểu thức chính quy đó. Dưới đây là một danh sách mẫu:
prefixone.123-abc._tag1.001.jpg
prefixone.345-xyz._tag1.002.jpeg
prefixtwo.123-abc._tag2._tag1.003.jpg
prefixone.123-abc._tag2.004.jpeg
prefixtwo.345-xyz._tag2._tag3._tag1.005.jpg
prefixtwo.123-abc._tag1.001.jpg
prefixone.345-xyz._tag1.001.png
prefixtwo.456-rst._tag1.001.png
Tất cả những tập tin này có thể đã có khả năng được trả lại trong file danh sách từ opendir của chúng tôi() chức năng, bất kỳ những có thể là một trận đấu nếu sên phù hợp. Bất kể thứ tự của thông tin gắn thẻ trong tên tệp.
Tôi hy vọng điều này sẽ giúp người dùng khác đấu tranh với regex. Đó là một nỗi đau để có được hang của nhưng một khi bạn hiểu một vài điều cơ bản, phần còn lại bắt đầu nhanh chóng rơi vào vị trí để bắt đầu xây dựng của riêng bạn.
Code:
<?php
// create an array to hold directory list
$results = array();
// create a handler for the directory
$directory = $_SERVER['DOCUMENT_ROOT'].'/some/path/to/images/';
$handler = opendir($directory);
// open directory and walk through the filenames
while ($file = readdir($handler)) {
// if file isn't this directory or its parent, add it to the results
if ($file != "." && $file != "..") {
// check with regex that the file format is what we're expecting and not something else
if(preg_match('#^(prefixone|prefixtwo)[^\s]*\.'.$wordpress-slug.'\.[^\s]+(\.(jpg|jpeg|png))#', $file)) {
// add to our file array for later use
$results[] = $file;
}
}
}
?>
Tôi không thực sự cần đệ quy cho điều này, nhưng có thực sự rất nhiều ví dụ về đệ quy trực tuyến và đó là thực sự là ít trong số những lo lắng của tôi. Cách ly nội dung theo mẫu là cốt lõi của tác vụ này nên mã trên đã đủ.
Sidenote:
Để những người chỉ ra những "ý kiến chấp nhận" ngày hôm qua, tôi không có ý tưởng tôi đã mất tích đó và tôi xin lỗi. Tôi đã có một ngày tồi tệ. Xin lỗi nếu tôi dường như chụp bất cứ ai về các bình luận. Đây là một cộng đồng tuyệt vời và tôi rất sẵn lòng trả lại nơi tôi có thể.
Tôi đã trả lời một số, nhưng nó cũng cho biết 0 trong số 6 câu hỏi đủ điều kiện đã được trả lời. Tôi thậm chí không thấy nơi mà 6 khu vực mà nó mong đợi tôi để trả lời. –
Khi tôi nhìn thấy một cái gì đó tôi nghĩ rằng tôi có thể đóng góp, tôi cố gắng trả lời hoặc nghiên cứu vấn đề cho người đó. –
Vâng, tôi thấy điều đó ngay bây giờ. Xin lỗi fellas. –