मैं निम्न पंक्ति से केवल फ़ाइल नाम निकालने का प्रयास कर रहा हूं:

"GET /mapitzend/public/components/font-awesome/css/font-awesome.css HTTP/1.1" 200 26651

इस मामले में अपेक्षित परिणाम "font-awesome.css" होना चाहिए, मैंने इसे अपने रेगेक्स के साथ अब तक प्राप्त कर लिया है:

\"(.[^\"]+)\s+HTTP

इसके ऊपर का रेगेक्स रिटर्न देता है: "GET /mapitzend/public/components/font-awesome/css/font-awesome.css HTTP

मुझे यहां क्या समझ नहीं आ रहा है..

0
zeid10 18 अक्टूबर 2017, 08:41

2 जवाब

regex का उपयोग करके फ़ाइल नाम निकालना संभव है, regex का उपयोग करके पथ निकालना शुरू करना आसान है और फिर basename() या pathinfo():

$line = '"GET /mapitzend/public/components/font-awesome/css/font-awesome.css HTTP/1.1" 200 26651';

$m = array();
if (preg_match('/GET (.*) HTTP/', $line, $m)) {
    $filename = basename($m[1]);
}

केवल regex का उपयोग करना:

if (preg_match('#GET /(.*/)*(.*) HTTP#', $line, $m)) {
    $filename = $m[2];
}
0
axiac 18 अक्टूबर 2017, 08:49

एक फ़ाइल नाम के गुणों का उपयोग करना जिसमें .css,.html जैसे कुछ एक्सटेंशन हैं, आप निम्नलिखित रेगेक्स का उपयोग कर सकते हैं।

रेगेक्स: [^\/]+?\.[a-z]+

स्पष्टीकरण:

[^\/]+? एक स्ट्रिंग से मेल खाता है जिसका पिछला वर्ण / था।

\.[a-z]+ यह सुनिश्चित करने के लिए एक्सटेंशन से मेल खाता है कि यह एक फ़ाइल है।

Regex101 डेमो

0
Rahul 18 अक्टूबर 2017, 08:53