क्या PHP में ऐसा कोई फ़ंक्शन है जो यूनिक्स/लिनक्स सिस्टम में grep -f फ़ाइल नाम करता है। यदि कोई नहीं है, तो PHP फ़ंक्शन/टूल इसके लिए एक अनुकूलित विधि/फ़ंक्शन बनाने में सहायता करेंगे। धन्यवाद!grep के साथ PHP में
उत्तर
असल IMHO, मैं कहेंगे यह निम्नलिखित है:
$result = preg_grep($pattern, file($path));
preg_grep
Docs और file
Docs देखें।
आप फ़ाइलों का एक सेट से अधिक है कि (रिकर्सिवली) क्या करने की जरूरत है, वहाँ भी glob
और foreach
या (Recursive
) DirectoryIterator
या GlobIterator
Docs और RegexIterator
Docs भूल जाते हैं नहीं है।
SplFileObject और RegexIterator साथ उदाहरण:
$stream = new SplFileObject($file);
$grepped = new RegexIterator($stream, $pattern);
foreach ($grepped as $line) {
echo $line;
}
आउटपुट ($file
के सभी लाइनों $ प्रतिमान):
$grepped = new RegexIterator($stream, $pattern);
foreach ($grepped as $line) {
echo $line;
}
डेमो: https://eval.in/208699
आप एक फ़ाइल खोलने के लिए file_get_contens() फ़ंक्शन को जोड़ सकते हैं और preg_match_all() फ़ंक्शन को रेगेक्स का उपयोग करके सामग्री को कैप्चर करने के लिए जोड़ सकते हैं।
$file = file_get_contents ('path/to/file.ext');
preg_match_all ('regex_pattern_here', $file, $matches);
print_r ($matches);
मैं 'file_get_contents()' का उपयोग कर रहा हूं लेकिन यह अंतःस्थापित हो जाता है। – FractalSpace
हालांकि यह कार्यात्मक रूप से समकक्ष है, यह पूरी फ़ाइल को स्मृति में लोड करता है, जबकि कमांड लाइन grep नहीं करता है। – cmc
@cmd: हाँ, अगर आप स्मृति को सहेजना चाहते हैं, तो कृपया [** SplFileObject **] (http://php.net/SplFileObject) और [** RegexIterator **] (http://php.net/ पर विचार करें) RegexIterator)। – hakre
अच्छा लगता है! ... आपके पास ऐसा उदाहरण नहीं होगा जो preg_grep ($ पैटर्न, फ़ाइल ($ पथ)) के लिए ड्रॉप-इन प्रतिस्थापन है? – cmc