PHP रेगुलर एक्सप्रेशन्स में लुकअहेड
कभी-कभी इस प्रकार का कार्य हल करने की आवश्यकता होती है: स्ट्रिंग 'aaa' को ढूंढें
और इसे '!' से बदलें,
लेकिन केवल तभी जब 'aaa' के बाद
'x' हो, और स्वयं 'x' को
न बदलें। यदि हम इस कार्य को 'सीधे तरीके से' हल करने का प्रयास करते हैं,
तो हम सफल नहीं होंगे:
<?php
preg_replace('#aaax#', '!', 'aaax'); // '!' होगा, लेकिन '!x' होना चाहिए
?>
कार्य को हल करने के लिए एक तरीका यह कहने की आवश्यकता है कि
'x' को प्रतिस्थापित नहीं किया जाना चाहिए। यह
विशेष ब्रैकेट (?= ) की सहायता से किया जाता है,
जो केवल देखते हैं, लेकिन स्वयं के साथ नहीं ले जाते।
इन ब्रैकेट्स को पॉजिटिव लुकअहेड कहा जाता है।
पॉजिटिव - क्योंकि 'x'
(हमारे मामले में) होना चाहिए - केवल तभी
प्रतिस्थापन होगा।
आइए हमारे कार्य को हल करने के लिए इन ब्रैकेट्स का उपयोग करें:
<?php
preg_replace('#aaa(?=x)#', '!', 'aaax'); // '!x' लौटाएगा
?>
नेगेटिव लुकअहेड भी होता है
- (?! ) - यह, इसके विपरीत, कहता है कि
कुछ नहीं होना चाहिए। निम्नलिखित उदाहरण में
प्रतिस्थापन केवल तभी होगा, जब 'aaa' के बाद
'x' न हो:
<?php
preg_replace('#aaa(?!x)#', '!', 'aaab'); // '!b' लौटाएगा
?>
एक स्ट्रिंग दी गई है, जिसमें फ़ंक्शन के नाम हैं:
<?php
$str = 'func1() func2() func3()';
?>
स्ट्रिंग से फ़ंक्शन नामों की एक सरणी प्राप्त करें।
एक टैग के साथ एक स्ट्रिंग दी गई है:
<?php
$str = '<a href="" class="eee" id="zzz">';
?>
इस टैग की विशेषताओं (ऐट्रिब्यूट्स) के नामों की एक सरणी प्राप्त करें।