2009-11-11 6 views
10

मैं इस तरह HTML पाठ का एक ब्लॉक में एक छवि के पहले src विशेषता को निकालने के लिए कोशिश कर रहा हूँ की जगह src विशेषता से मेल खाने के लिए regex, लेकिन को की जगह की बजाय पहले मिलान किए गए स्रोत विशेषता को कैसे लौटाएं?कैसे php में एक regex मैच वापस जाने के लिए, बजाय

PHP मैनुअल पर डालने से, ऐसा लगता है कि preg_filter() चाल चलती है, लेकिन मैं PHP> 5.3 वाले अंतिम उपयोगकर्ताओं पर भरोसा नहीं कर सकता।

अन्य सभी PHP regex फ़ंक्शन preg_match() की भिन्नता प्रतीत होते हैं, एक बूलियन मान लौटाते हैं, या preg_replace, जो मैच को किसी चीज़ से बदल देता है। क्या पर PHP में एक रेगेक्स मैच का सीधा तरीका है?

उत्तर

25

आप preg_match के तीसरे पैरामीटर का उपयोग कर सकते हैं, पता है कि था से मेल खाता है (यह एक सरणी, संदर्भ द्वारा पारित कर दिया है):

int preg_match (string $pattern , 
    string $subject [, array &$matches [, 
    int $flags [, int $offset ]]]) 

मैचों प्रदान की जाती है, तो यह है से भरा खोज के परिणाम। $matches[0] पाठ कि पूरा पैटर्न का मिलान नहीं हुआ शामिल होंगे, $matches[1] पाठ से मेल खाने वाला पहले कब्जा कर लिया parenthesized subpattern, और इतने पर होगा।


उदाहरण के लिए , कोड के इस भाग के साथ:

$str = 'Lorem ipsum dolor sit amet, adipisicing <img src="http://example.com/img.jpg" />consequat.'; 

$matches = array(); 
if (preg_match('#<img src="(.*?)" />#', $str, $matches)) { 
    var_dump($matches); 
} 

आप इस उत्पादन मिल जाएगा:

array 
    0 => string '<img src="http://example.com/img.jpg" />' (length=37) 
    1 => string 'http://example.com/img.jpg' (length=23) 

(ध्यान दें कि मेरी regex ज्यादा साधारण है - और जब कुछ HTML स्ट्रिंग से डेटा निकालने की बात आती है तो regex आम तौर पर "सही टूल" नहीं होता है ...)

+0

उत्कृष्ट, धन्यवाद। बीटीडब्ल्यू, एक HTML स्ट्रिंग से डेटा निकालने के लिए "सही उपकरण" क्या है? –

+0

आपका स्वागत है :-) ;; यह एक मुश्किल सवाल है ^^ मेरे पास एक पूर्ण HTML दस्तावेज़ है, मैं थोड़ी सी DOMDocument :: loadHTML का उपयोग करने के विचार की तरह हूं (देखें http://stackoverflow.com/questions/1274020/extract-form-fields-using-regex/1274074 # 1274074 कुछ विचारों के लिए मैंने कुछ समय पहले पोस्ट किया था) - लेकिन अन्य समाधान भी हैं –

+0

+1 var_dump सरणी संरचना और सामग्री समझाया। – Praesagus

संबंधित मुद्दे